首页 > 解决方案 > Process.StartInfo.WorkingDirecotry 在设置 StartInfo.Verb = "runas" 以启动 .bat 文件(包含 cd 命令)时没有用

问题描述

背景:我想使用 C# 程序调用一个 bat 文件,该文件将转到下一个不同的文件夹,然后执行不同的 exe。

这是 test.bat 文件:

echo test begin

cd test1
setup1.exe

cd test2
setup2.exe

echo test finished
echo off

这是我的 C# 代码:

using (Process proc = new Process())
{
    string command = @"c:\users\danvy\Desktop\script\test.bat";
    proc.StartInfo.FileName = command;
    proc.StartInfo.WorkingDirectory = Path.GetDirectoryName(command);

    //run as admin
    proc.StartInfo.Verb = "runas";

    proc.Start();
    while (!proc.HasExited)
    {
        proc.WaitForExit(1000);
    }
}

在这种情况下,setup1.exe 和 setup2.exe 无法执行。

但是如果注释行:proc.StartInfo.Verb = "runas"; 然后可以调用setup1.exe和setup2.exe运行。

太奇怪了,好像 set proc.StartInfo.Verb = "runas"; 工作目录不工作。

在我看来, Verb = "runas" 只是为了设置权限让程序以管理员身份运行,为什么它会使 Process.StartInfo.WorkingDirecotry 没有用?

标签: c#process

解决方案


推荐阅读