【问题标题】:How can I start ServerManager.msc on a 64bit Windows Server 2008 from a 32bit .NET App?如何从 32 位 .NET 应用程序在 64 位 Windows Server 2008 上启动 ServerManager.msc?
【发布时间】:2011-01-27 17:16:51
【问题描述】:

我有以下情况:
- 64 位 Windows Server 2008。
- 32 位 .NET 应用程序(由于各种原因需要 x86)。
- 我需要从我的 .NET 应用程序启动 ServerManager.msc。

使用 Process.Start("ServerManager.msc") 时,出现以下异常:
System.ComponentModel.Win32Exception.
Message="系统找不到指定的文件"。

在 32 位 Windows Server 2008 上,代码运行良好...
我试图包含 ServerManager.msc 的完整路径,但这也无济于事。
使用或不使用管理员权限运行也没有区别。

有什么想法吗?

【问题讨论】:

    标签: c# .net windows 64-bit wow64


    【解决方案1】:

    在 WOW64 上,如果 32 位应用程序引用 C:\Windows\System32;操作系统透明地将其重新映射到 C:\Windows\SysWOW64(这是 32 位内容所在的位置)。

    作为Win64上的32位应用,需要指定完整路径为%SYSTEMROOT%\SysNative\ServerManager.msc

    SysNative 在 x86 Windows 上不存在(没有反向映射,至少在 Win7 Ultimate 上是这样),因此您需要先确定您使用的是 x86 还是 x64。

    【讨论】:

    • 感谢您的提示!这帮助我解决了这个问题。作为最后一步,我还需要将“ServerManager.msc”替换为“CompMgmtLauncher.exe”,因为 .msc 文件是由 mmc.exe 间接加载的。我现在像这样打开文件:Win32Api.GetWindowsDirectory() + "\SysNative\CompMgmtLauncher.exe"
    【解决方案2】:

    请使用depends.exe 找出丢失的文件/dll。

    如果它使用的是在较新版本的 VC++ Runtime 中编译的 x86 本机 dll/库。在 2008 服务器上安装最新的 VC++ 运行时。最新的我相信是2008 SP1

    【讨论】:

    • 与 Process.Start 无关
    猜你喜欢
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2012-01-19
    • 2011-02-27
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多