我有一个批处理文件,我在C#中使用Process.Start()运行。这是我的代码:
Process proc = new Process();
proc.StartInfo.FileName = cmd;
proc.StartInfo.Arguments = args;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = true;
proc.Start();
proc.WaitForExit();
return proc.ExitCode;
当我打开命令行并输入echo %ProgramFiles%
时,它会返回C:\Program Files
。在批处理文件(由C#proc.Start()调用运行)内部,它展开%ProgramFiles%
并等于C:\Program Files (x86)
。我无法弄清楚为什么会发生这种情况并且它破坏了我的代码。我该如何解决?为什么会这样?
答案 0 :(得分:0)
最有可能的原因是您的C#代码正在编译为x86,Windows希望保持向后兼容性,因此Program Files指向x86版本。
编译为64位,它将指向64位Program Files文件夹。
现在,如果您希望程序在x86版本的Windows上运行,则需要编译为x86并为此情况添加一些手动处理。