c#ProcessStartInfo

为什么是这样

ProcessStartInfo myProcess = new ProcessStartInfo(path); myProcess.UserName = username; myProcess.Password = MakeSecureString(password); myProcess.UseShellExecute = false; Process.Start(myProcess); 

工作,但是

 ProcessStartInfo myProcess = new ProcessStartInfo(); myProcess.FileName = Path.GetFileName(path); myProcess.WorkingDirectory = Path.GetDirectoryName(path); myProcess.UserName = username; myProcess.Password = MakeSecureString(password); myProcess.UseShellExecute = false; Process.Start(myProcess); 

不是。

我想使用第二个因为这个问题: https : //stackoverflow.com/a/2621943/1306186

我不断得到一个文件未找到exception……有什么想法吗?

编辑:
路径例如是@"C:\Users\User\Desktop\ConsoleApplication2.exe"

这一点是错的

 myProcess.FileName = Path.GetFileName(path); 

这应该是

 myProcess.FileName = path; 

C:\SomeDir\SomeApp.exe ,您所拥有的代码将文件名设置为SomeApp.exe ,它找不到。 算一下自己很幸运,有些情况下(例如你的应用程序和你想运行的应用程序在同一个文件夹中),然后在部署时你可能会觉得好笑。

我会尝试使用Path.GetFullPath()而不是简单的Path.GetFileName()因为当您使用字符串参数时,构造函数使用完整路径初始化FileName