WPF Process.Start 出现 Win32Exception 异常

我在使用 WPF 其他其他软件的时候,发现出现Win32Exception异常。

如果使用下面的代码启动另一个软件,那么在启动的软件路径不存在时,就会出现异常System.ComponentModel.Win32Exception,没有其他信息

	        var st = new ProcessStartInfo(ProcessName,
                "-p " + Port);

            if (NeedHidden)
            {
                st.CreateNoWindow = true;
                st.WindowStyle = ProcessWindowStyle.Hidden;
            }

            var remoteGuardian = Process.Start(st); //监控远程应用

上面的代码的 NeedHidden 表示是否需要隐藏窗口,如果设置为 false ,启动控制台会出现黑窗。代码 ProcessName 就是其他的软件的路径。

如果这时 File.Exists(ProcessName) 为 false ,那么 Process.Start 就出现System.ComponentModel.Win32Exception异常,而且这个异常没有其他的信息

所以建议在调用 Process.Start 之前判断路径是否存在

	        if (!File.Exists(ProcessName))
            {
                throw new ArgumentException("启动软件路径不存在" + ProcessName);
            }

为什么会出现找不到路径?我使用的是WPF 封装 dotnet remoting 调用其他进程里面需要引用一个库用来做远程的软件,因为我使用一个库 A 引用了远程的软件,使用程序B引用了A,因为没有直接引用远程软件,所以就没有在输入路径找到这个文件,所以出现异常。

其他可能出现异常的是:

  • 启动的程序弹出 UAC 被用户取消

更多关于 remoting 的博客

WPF 封装 dotnet remoting 调用其他进程

.net remoting 抛出异常

.net remoting 使用事件

感谢

walterlv 告诉我另一个出现异常的情况

Miss_Bread 提供的图片


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

图片在保存的时候===》出现这个异常:GDI+ 中发生一般性错误

异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html ? 一般这种情况都是没有权限,比如目录没有...

39480
来自专栏跟着阿笨一起玩NET

在Entity Framework中重用现有的数据库连接字符串

本文转载:http://www.cnblogs.com/dudu/archive/2011/01/29/entity_framework_connection_...

13320
来自专栏逸鹏说道

Ubuntu18.04下给Jupyter-NoteBook设置默认工作路径

生成配置文件:jupyter-notebook --generate-config

25130
来自专栏calvin

Microsoft.AspNet.Identity 自定义使用现有的表—登录实现

Microsoft.AspNet.Identity是微软新引入的一种membership框架,也是微软Owin标准的一个实现。Microsoft.AspNet....

14420
来自专栏张善友的专栏

Castle.MVC框架介绍

Castle.MVC目前还在Castle的Sandbox中,只是在源代码管理中有,还没有向外发布版本,这里介绍多时Web的MVC,和Castle的MonoRai...

24880
来自专栏Netkiller

Linux下命令行图片格式转换

以下节选自《Netkiller Multimedia 手札》 原始出处:http://www.netkiller.cn/multimedia/index.htm...

38990
来自专栏python3

python3--尝试写一个三级菜单

10220
来自专栏大内老A

“前.NET Core时代”如何实现跨平台代码重用 ——程序集重用

除了在源代码层面实现共享(“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用)之外,我们还可以跨平台共享同一个程序集,这种独立于具体平台的“中性...

21080
来自专栏BY的专栏

GCD调度组

30750
来自专栏Rovo89

如何让sublime text 2可以支持C语言的编译和run

18540

扫码关注云+社区

领取腾讯云代金券