C#Process.Start正在弄乱批处理文件中的URI

时间:2012-11-28 00:23:22

标签: c#-4.0 process batch-file uri appdomain

这只是一个简单的问题,我确信有人能够快速回答,因为我很可能只是遗漏了一些东西。

假设我有以下目录布局

Folder1
  -> CurrentlyRunning.EXE
  -> Folder2
     ProcessToStart.Bat
     ApplicationToStartFromBat.exe

这是应用程序内部的代码。

CurrentlyRunning.EXE:

        var proc = new Process
            {
                StartInfo =
                    {
                        FileName = "Folder2/ProcessToStart.Bat",
                        WindowStyle = ProcessWindowStyle.Hidden,
                        CreateNoWindow = true,
                        UseShellExecute = false
                    }
            };

        proc.Start();

ProcessToStart.Bat:

START ApplicationToStartFromBat.exe

现在,如果我通过双击它来运行ProcessToStart.Bat,它将打开ApplicationToStartFromBat.exe而没有任何问题(这很好)。如果我运行CurrentlyRunning.EXE(将执行我上面发布的代码),BAT文件将失败,说它无法找到我的EXE(这真的很奇怪)。

如果我将BAT文件更改为:

START Folder2/ApplicationToStartFromBat.exe

然后运行CurrentlyRunning.EXE,然后bat将正确打开ApplicationToStartFromBat.exe。我的问题是我不能因为某种原因改变蝙蝠内部的代码。

为什么proc.Start()导致bat文件搜索根目录发生变化,如何阻止这种情况发生?

由于

1 个答案:

答案 0 :(得分:1)

我认为这与你的exe文件的工作目录的位置有关。

尝试使用ProcessStartInfo.WorkingDirectory为批处理文件设置正确的目录。

var proc = new Process
{
    StartInfo =
    {
        FileName = "Folder2/ProcessToStart.Bat",
        WorkingDirectory = "DirectoryPath";
        WindowStyle = ProcessWindowStyle.Hidden,
        CreateNoWindow = true,
        UseShellExecute = false
    }
};
proc.Start();