Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# process.start更改环境变量_C#_Batch File_Process_Environment Variables - Fatal编程技术网

C# process.start更改环境变量

C# process.start更改环境变量,c#,batch-file,process,environment-variables,C#,Batch File,Process,Environment Variables,我有一个批处理文件,正在用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.WaitF

我有一个批处理文件,正在用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:\ProgramFiles
。在批处理文件(由C#proc.Start()调用运行)内部,它展开
%ProgramFiles%
,并等于
C:\ProgramFiles(x86)
。我不明白为什么会发生这种情况,它破坏了我的代码。我如何修复它以及为什么会发生这种情况?

很可能是因为您的C代码正在编译为x86,Windows希望保持向后兼容性,因此程序文件指向x86版本

编译为64位,它将指向64位程序文件文件夹


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

很可能是因为你的C#代码被编译成x86,Windows希望保持向后兼容性,所以程序文件指向x86版本。编译为64位,它可能会指向64位程序文件文件夹。这很有效!如果你把它作为一个答案,我会接受的。