【发布时间】: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