C# 处理进程.Start()引发的Win32Exception

C# 处理进程.Start()引发的Win32Exception,c#,.net,winapi,C#,.net,Winapi,在某些计算机上,当我调用Process.Start()以启动助手可执行文件时,会出现以下异常: System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Proces

在某些计算机上,当我调用
Process.Start()
以启动助手可执行文件时,会出现以下异常:

System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
问题:当我得到
Win32Exception
时,我想知道这是我描述的“未找到文件”异常还是其他异常。如何可靠地做到这一点?我应该将此
0x80004005
与其他内容进行比较,还是分析错误消息


一些解释:由于某种原因,可执行文件可能会被删除(这就是找不到文件的原因)。这是意料之中的情况。如果异常是由于其他原因引发的,我想报告它。

我认为应该这样做:

public static int E_FAIL=unchecked((int)0x80004005);
公共静态int错误\u文件\u未找到\u=0x2;
//当捕捉到异常时
捕获(win32e异常)
{
如果(e.ErrorCode==e\u失败&&e.NativeErrorCode==ERROR\u文件未找到)
{
//这是一个“未找到文件”异常
}
其他的
{
//这是另外一回事
}
}
E\u FAIL
是一个错误,
ERROR\u FILE\u NOT\u FOUND
是一个错误


不应使用错误消息,因为它与区域性有关,实际上是系统错误代码的翻译。

我认为应该这样做:

public static int E_FAIL=unchecked((int)0x80004005);
公共静态int错误\u文件\u未找到\u=0x2;
//当捕捉到异常时
捕获(win32e异常)
{
如果(e.ErrorCode==e\u失败&&e.NativeErrorCode==ERROR\u文件未找到)
{
//这是一个“未找到文件”异常
}
其他的
{
//这是另外一回事
}
}
E\u FAIL
是一个错误,
ERROR\u FILE\u NOT\u FOUND
是一个错误

不应使用该错误消息,因为它与区域性有关,实际上是系统错误代码的翻译。

0x80004005
。这太笼统了,没有什么帮助。您的运气可能会更好。
0x80004005
is。这太笼统了,没有什么帮助。你的运气可能会更好。