的过程.Start更改环境变量

本文关键字:环境变量 Start 过程 | 更新日期: 2023-09-27 17:49:26

我有一个批处理文件,我在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)。我不知道为什么会发生这种情况,它破坏了我的代码。我该如何修复它,为什么会发生?

的过程.Start更改环境变量

很可能是因为你的c#代码被编译为x86版本,而Windows想要保持向后兼容性,所以Program Files指向x86版本。

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

现在,如果你想让你的程序在x86版本的Windows上运行,你需要编译为x86,并为这种情况添加一些手动处理