process.start更改环境变量

时间:2014-03-11 14:11:22

标签: c# batch-file process environment-variables

我有一个批处理文件,我在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)。我无法弄清楚为什么会发生这种情况并且它破坏了我的代码。我该如何解决?为什么会这样?

1 个答案:

答案 0 :(得分:0)

最有可能的原因是您的C#代码正在编译为x86,Windows希望保持向后兼容性,因此Program Files指向x86版本。

编译为64位,它将指向64位Program Files文件夹。

现在,如果您希望程序在x86版本的Windows上运行,则需要编译为x86并为此情况添加一些手动处理。