我有一个批处理文件,我正在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)
。我不知道为什么会这样,而且正在破坏我的代码。我该如何解决它,为什么会发生呢?
很有可能是因为您的C#代码被编译为x86,而Windows希望保持向后兼容性,因此Program Files指向x86版本。
编译为64位,它将指向64位Program Files文件夹。
现在,如果您希望程序在x86版本的Windows上运行,则需要将其编译为x86并为此情况添加一些手动处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句