C# 4.0 C#进程。Start与URI';它在批处理文件中

C# 4.0 C#进程。Start与URI';它在批处理文件中,c#-4.0,process,batch-file,uri,appdomain,C# 4.0,Process,Batch File,Uri,Appdomain,这只是一个快速的问题,我相信有人会很快回答,因为我很可能只是错过了一些东西 假设我有以下目录布局 Folder1 -> CurrentlyRunning.EXE -> Folder2 ProcessToStart.Bat ApplicationToStartFromBat.exe 这是应用程序内部的代码 CurrentlyRunning.EXE: var proc = new Process {

这只是一个快速的问题,我相信有人会很快回答,因为我很可能只是错过了一些东西

假设我有以下目录布局

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来运行它,它将毫无问题地打开ApplicationStartFrombat.exe(这很好)。如果我运行CurrentlyRunning.EXE(它将执行我上面发布的代码),BAT文件会失败,说它找不到我的EXE(这真的很奇怪)

如果我将BAT文件更改为:

START Folder2/ApplicationToStartFromBat.exe
然后运行CurrentlyRunning.EXE,bat将正确打开ApplicationStartFrombat.EXE。我的问题是,出于这样或那样的原因,我无法更改bat内部的代码

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


谢谢

我认为这与exe文件的工作目录有关

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

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