gpt4 book ai didi

C# Process.Start 和 Process.StartInfo 错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:08 25 4
gpt4 key购买 nike

我试图通过单击表单上的按钮打开应用程序 (.exe):

System.Diagnostics.Process.Start("C:\\Games\\GameDir\\Game.exe");

应用程序执行并显示错误消息“找不到 background.jpg,应用程序现在将退出。”

有问题的 .jpg 位于 .exe 之外的名为“数据”的文件夹中(同一目录,即 C:/Games/GameDir/data)。所以,我尝试使用:

System.Diagnostics.ProcessStartInfo pInfo = new System.Diagnostics.ProcessStartInfo();
pInfo.WorkingDirectory = "C:\\Games\\GameDir\\";

//Also tried pInfo.WorkingDirectory = "C:\\Games\\GameDir"; without ending slashes
pInfo.FileName = "Game.exe";
pInfo.UseShellExecute = false;
System.Diagnostics.Process.Start(pInfo);

项目无法构建,因为“系统找不到指定的文件”(Process.Start(pInfo) 出错)。

我必须创建可执行文件的快捷方式,然后启动它:

System.Diagnostics.Process.Start("C:\\Games\\GameDir\\Game.exe - Shortcut");

这终于奏效了。

我的问题是 - 为什么 pInfo.WorkingDirectory 不起作用? “C:/Games/GameDir”的快捷方式的“Start in”属性与 pInfo.WorkingDirectory = “C:/Games/GameDir”有何不同?它们不是一回事吗?

最佳答案

WorkingDirectory 仅在 UseShellExecute = true 时使用。否则,将一起忽略该属性并使用文件名完整路径。 From Microsoft's documentation :

When UseShellExecute is false, the WorkingDirectory property is not used to find the executable. Instead, its value applies to the process that is started and only has meaning within the context of the new process.

要使其正常工作,只需删除工作目录分配并使用文件名中的路径即可。

System.Diagnostics.ProcessStartInfo pInfo = new System.Diagnostics.ProcessStartInfo();
pInfo.FileName = "C:\\Games\\GameDir\\Game.exe";
pInfo.UseShellExecute = false;
System.Diagnostics.Process.Start(pInfo);

关于C# Process.Start 和 Process.StartInfo 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24710655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com