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();