Как запустить ServerManager.msc в 64-разрядной версии Windows Server 2008 из 32-разрядного приложения .NET? - PullRequest
1 голос
/ 15 марта 2010

У меня есть следующий сценарий:
- 64-битная Windows Server 2008.
- 32-битное приложение .NET (по разным причинам должно быть x86).
- Мне нужно запустить ServerManager.msc из моего приложения .NET.

При использовании Process.Start («ServerManager.msc») я получаю следующее исключение:
System.ComponentModel.Win32Exception.
Сообщение = "Система не может найти указанный файл".

На 32-битной Windows Server 2008 код работает нормально ...
Я попытался ввести полный путь к ServerManager.msc, но это тоже не помогает.
Также нет разницы, если вы работаете с правами администратора или без них.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 15 марта 2010

На WOW64, если 32-битное приложение ссылается на C: \ Windows \ System32; операционная система прозрачно переназначает это в C: \ Windows \ SysWOW64 (где живут 32-битные компоненты).

Как 32-разрядное приложение на Win64, вы должны указать полный путь как %SYSTEMROOT%\SysNative\ServerManager.msc.

SysNative не существует в Windows x86 (нет обратного сопоставления, по крайней мере, в Win7 Ultimate), поэтому вам нужно выяснить, используете ли вы сначала x86 или x64.

0 голосов
/ 15 марта 2010

Пожалуйста, используйте зависимость.exe , чтобы узнать, какой файл / dll отсутствует.

Если используется родная библиотека / библиотека x86, скомпилированная в более новой версии VC ++ Runtime. Установите последнюю версию VC ++ на сервере 2008 года. Последнее, что я считаю, это 2008 SP1 .

...