如何从 c# 中的 32 位进程运行 64 位进程?

Jim*_*Boy 3 .net c# process 32bit-64bit

我在这里看到了一些类似的问题,但找不到我的问题的答案..

这个几乎明白了: 如何从 32 位进程启动 64 位进程

但我错过了关于如何做到这一点的解释。

我正在努力实现以下目标:

P.StartInfo.FileName = "%windir%\\sysnative\\cmd.exe";
Run Code Online (Sandbox Code Playgroud)

但可能做错了什么 - 因为当我这样设置时没有任何反应,但是当这样设置时:

P.StartInfo.FileName = "c:\\windows\\sysnative\\cmd.exe";
Run Code Online (Sandbox Code Playgroud)

我认为是一样的 - 一切正常。我究竟做错了什么?

我怎么能“告诉”解决 %windir% 的过程而不是按原样对待它?!

我会像在第二个示例中那样设置它,但是我从不允许更改的外部文件中获取文件名,并将其写为 %windir%\sysnative\cmd。

slo*_*oth 5

也许你只是在寻找Environment.ExpandEnvironmentVariables

用与变量值等效的字符串替换嵌入在指定字符串中的每个环境变量的名称,然后返回结果字符串。


P.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%windir%\\sysnative\\cmd.exe");
Run Code Online (Sandbox Code Playgroud)