【问题标题】:process.start changes environment variablesprocess.start 更改环境变量
【发布时间】:2014-04-15 05:09:50
【问题描述】:

我有一个批处理文件,我在 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 位程序文件夹。
  • 成功了!如果您将其发布为答案,我会接受。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2015-08-05
    • 2013-02-22
    相关资源
    最近更新 更多