3

为什么是这样

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

我不断收到文件未找到异常...有什么想法吗?

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

4

2 回答 2

5

这一点是错误的

myProcess.FileName = Path.GetFileName(path);

这应该是

myProcess.FileName = path;

传入C:\SomeDir\SomeApp.exe并且您拥有的代码会将文件名设置为SomeApp.exe,它无法找到。算自己幸运,在某些情况下它可能会出现(例如,您的应用程序和您要运行的应用程序在同一个文件夹中),然后在部署时您可能会感到很有趣。

于 2012-09-16T20:16:48.660 回答
0

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

于 2012-09-16T20:16:34.257 回答