这只是一个简单的问题,我确信有人能够快速回答,因为我很可能只是遗漏了一些东西。
假设我有以下目录布局
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文件搜索根目录发生变化,如何阻止这种情况发生?
由于
答案 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();