我有这个方法。
根据我找到的文档和这里的很多答案,它应该启动另一个程序 - SDCBackup.exe。但事实并非如此。我尝试在文件名中添加 .exe,但没有任何区别。我收到了带有消息“文件未找到”的消息框。我已经检查了 p 和 StartInfo,一切看起来都正确。StartInfo.UseShellExecute 为 true。调试显示,产生异常的是 p.Start() 这一行。而异常是 System.ComponentModel.Win32Exception,并提示“文件未找到”。文档说,上述代码与 Windows 菜单中的“运行”做的是完全相同的事情,但显然不是这样。如果我在 Windows 菜单的“运行”部分中写入“SDCBackup”,SDCBackup.exe 就会像应该的那样启动。 (而 SDCBackup.exe 是 ClickOnce 安装,除了 Windows 本身之外,没有人真正知道在哪里找到它...)那么我的代码为什么行不通呢?
private void StartSDCBackupSet() {
using (Process p = new Process()) {
p.StartInfo.FileName = "SDCBackup";
try {
p.Start();
BackIcon.ShowBalloonTip(5000, "Backup", "Editor for settings startet", ToolTipIcon.Info);
} catch (Exception) {
MessageBox.Show("Program til settings blev ikke fundet");
}
}
}
根据我找到的文档和这里的很多答案,它应该启动另一个程序 - SDCBackup.exe。但事实并非如此。我尝试在文件名中添加 .exe,但没有任何区别。我收到了带有消息“文件未找到”的消息框。我已经检查了 p 和 StartInfo,一切看起来都正确。StartInfo.UseShellExecute 为 true。调试显示,产生异常的是 p.Start() 这一行。而异常是 System.ComponentModel.Win32Exception,并提示“文件未找到”。文档说,上述代码与 Windows 菜单中的“运行”做的是完全相同的事情,但显然不是这样。如果我在 Windows 菜单的“运行”部分中写入“SDCBackup”,SDCBackup.exe 就会像应该的那样启动。 (而 SDCBackup.exe 是 ClickOnce 安装,除了 Windows 本身之外,没有人真正知道在哪里找到它...)那么我的代码为什么行不通呢?
.FileName
指的是可执行文件的完整路径或相对路径,请参考这篇帖子(https://dev59.com/vXnZa4cB1Zd3GeqPoEd6)。 - Ryan Wilson