的过程.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)
。我不知道为什么会发生这种情况,它破坏了我的代码。我该如何修复它,为什么会发生?
很可能是因为你的c#代码被编译为x86版本,而Windows想要保持向后兼容性,所以Program Files指向x86版本。
编译为64位,它将指向64位Program Files文件夹。
现在,如果你想让你的程序在x86版本的Windows上运行,你需要编译为x86,并为这种情况添加一些手动处理