【问题标题】:how to run a 64 bit process from a 32 bit process in c#? [duplicate]如何在 C# 中从 32 位进程运行 64 位进程? [复制]
【发布时间】:2015-07-16 20:24:53
【问题描述】:

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

这个几乎明白了: How to start a 64-bit process from a 32-bit process

但我缺少有关如何执行此操作的说明。

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

P.StartInfo.FileName = "%windir%\\sysnative\\cmd.exe";

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

P.StartInfo.FileName = "c:\\windows\\sysnative\\cmd.exe";

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

我怎样才能“告诉”进程来解决 %windir% 而不是按原样对待它?!

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

【问题讨论】:

    标签: c# .net process 32bit-64bit


    【解决方案1】:

    也许您只是在寻找Environment.ExpandEnvironmentVariables

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


    P.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%windir%\\sysnative\\cmd.exe");
    

    【讨论】:

      【解决方案2】:

      您的问题与 32 位或 64 位无关...启动新进程的方式没有区别,操作系统根据 PE 标头计算出启动时需要哪种类型的进程.

      您的问题是环境变量没有以您启动进程的方式扩展。看到这个答案:

      https://stackoverflow.com/a/9675482/61164

      【讨论】:

        猜你喜欢
        • 2011-01-01
        • 1970-01-01
        • 2012-02-05
        • 2013-03-11
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        • 2014-07-18
        相关资源
        最近更新 更多