process.start更改环境变量

锡尔丹克

我有一个批处理文件,我正在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)我不知道为什么会这样,而且正在破坏我的代码。我该如何解决它,为什么会发生呢?

大卫·鲁曼(David Ruhmann)

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章