C#的ProcessStartInfo
这是为什么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://*.com/a/2621943/1306186
我经常收到未发现异常文件...任何想法?
编辑:
Path是例如@"C:\Users\User\Desktop\ConsoleApplication2.exe"
这一点是错误的
myProcess.FileName = Path.GetFileName(path);
这应该是
myProcess.FileName = path;
通行证在C:\SomeDir\SomeApp.exe
,你必须将文件名设置为SomeApp.exe
,它无法找到的代码。算你自己幸运,有可能的情况下(例如你的应用程序和你想运行的应用程序在同一个文件夹中),然后在部署时你可能会很有趣。
这和我已经标记为'working'的第一个例子完全一样, ...构造者除了设置'FileName'属性之外什么都不做。 – Zulakis
@Zulakis,你的观点是?第二个例子没有工作,因为它找不到ConsoleApplication2.exe。第一个例子(和建议的更正)的确如此,因为您告诉它ConsoleApplication2.exe位于C:\ Users \ User \ Desktop中,它可以找到它。如果这不是你想要的答案,请改变你的问题,让我们知道你所做的一个线索...... –
根据我的入门帖子中的链接帖子,这样做是错误的......'[QUOTE]我有我的在文件名属性中设置完整的路径和文件名,相反,将您的路径放置在“工作目录”属性下,仅为“文件名”保留文件名属性。 [/ QUOTE]'.... – Zulakis
由于构造函数,当你用字符串参数使用它的完整路径初始化FileName
我会尝试使用Path.GetFullPath()
而不是简单地Path.GetFileName()
。
您打印了“Path.GetFileName(path);'和'Path.GetDirectoryName(path);'的结果吗?他们是否正确? – Tudor
在你的代码中放置一个断点并比较'ProcessStartInfo'实例和第二个实例中的值。看看有什么不同。如果你改变了'myProcess.UseShellExecute = true;'这两个都在工作,那么你可以使用 –
。 – hamed