小编Mik*_*ika的帖子

当 useshellexecute = false 时 Process.start 找不到文件

我需要从我的 UWP 应用程序调用批处理文件。这样做的方法似乎是Process.Start(),但它说当我按照它输出的路径时,它甚至没有找到文件,它肯定存在。文件路径和工作目录都作为使用 shellexecute = false 时所需的完整路径给出。

当我设置 useshellexecute = true 时它起作用。由于完整路径在这里有效,文件显然就在那里。使用 shellexecute = true 时,工作目录仅指定应搜索文件的位置,命令提示符在 system32 目录中启动,但我需要工作目录是打开的批处理所在的位置。

因此,ShellExecute = false。

我试过: 1. ShellExecute = true。它找到了文件,但工作目录设置不正确。2. 硬编码批处理的绝对路径。还是没找到。3. 设置 StartInfo.FileName 而不是通过参数给它。4. 相对路径 5. Process.Start(Filename)。Can't set Working Directory without StartInfo 6.看类似的问题,但答案总是我已经有了(当shellexecute = false时使用完整路径)

string executable = args[2];

string path = Assembly.GetExecutingAssembly().CodeBase;
string directory = Path.GetDirectoryName(path);

var startInfo = new ProcessStartInfo(directory + @"\Diagnose\_data\Updater\" + executable);

startInfo.UseShellExecute = false;
startInfo.WorkingDirectory = directory + @"\Diagnose\_data\Updater";

startInfo.RedirectStandardError = true;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;

Process.Start(startInfo); …
Run Code Online (Sandbox Code Playgroud)

c# processstartinfo start-process uwp

5
推荐指数
1
解决办法
566
查看次数

标签 统计

c# ×1

processstartinfo ×1

start-process ×1

uwp ×1