【问题标题】:C# Process.Start is messing with URI's inside a batch fileC# Process.Start 在批处理文件中弄乱了 URI
【发布时间】:2012-11-28 00:23:22
【问题描述】:

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

假设我有以下目录布局

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(这很好)。如果我运行 CurrentRunning.EXE(它将执行我上面发布的代码),BAT 文件会失败,说它找不到我的 EXE(这真的很奇怪)。

如果我将 BAT 文件更改为:

START Folder2/ApplicationToStartFromBat.exe

然后运行CurrentlyRunning.EXE,bat就会正确打开ApplicationToStartFromBat.exe。我的问题是由于某种原因我无法更改 bat 中的代码。

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我认为这与您的 exe 文件的 working 目录所在的位置有关。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      相关资源
      最近更新 更多