当我在我的程序中尝试启动特定的exe文件“nvidia-smi.exe”(NVIDIA系统管理界面程序)时,收到错误“System.ComponentModel.Win32Exception。系统找不到指定的文件”< / p>
string directoryPath = "C:\\";
string fileName = "nvidia-smi.exe";
Console.WriteLine(System.IO.File.Exists(directoryPath + fileName)); //true
proc.StartInfo.WorkingDirectory = directoryPath;
proc.StartInfo.FileName = fileName;
proc.Start(); //Error. The system cannot find the file specified
但与此同时我可以:
1)从同一目录(exe,bat等)启动其他文件
2)成功执行我需要的文件“nvidia-smi.exe”如果将其重定位到我的项目目录并且不使用属性“proc.StartInfo.WorkingDirectory”。
-----------------答案是(感谢您的帮助!)------------------
你需要这个:
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.WorkingDirectory = "C:\\";
proc.StartInfo.FileName = "nvidia-smi.exe";
或者这个:
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "C:\\nvidia-smi.exe";
答案 0 :(得分:2)
如果您将Sessions?$apply=filter(SomeColumn eq 1)
/groupby((Application/Name), aggregate(TotalLaunchesCount with sum as Total))
&$orderby=Total
&$top=5
设置为true,则proc.StartInfo.UseShellExecute
的行为将与您预期的一样。否则,您必须指定WorkingDirectory
的绝对路径,或确保您的可执行文件位于您的环境路径中。
相关文件: