2010-03-15 5 views
1

J'ai le scénario suivant:
- 64 bits Windows Server 2008.
- 32bit application .NET (doit être x86 pour diverses raisons).
- J'ai besoin de démarrer ServerManager.msc à partir de mon application .NET. Lorsque vous utilisez Process.Start ("ServerManager.msc"), l'exception suivante est générée:
System.ComponentModel.Win32Exception.
Message = "Le système ne trouve pas le fichier spécifié". Sur un 32 bits Windows Server 2008 le code fonctionne bien ...
J'ai essayé d'inclure le chemin d'accès complet à ServerManager.msc, mais cela n'aide pas non plus.
Pas de différence non plus si vous travaillez avec ou sans privilèges d'administrateur.Comment démarrer ServerManager.msc sur un Windows Server 2008 64 bits à partir d'une application .NET 32 bits?

Des idées?

Répondre

1

Sur WOW64, si une application 32 bits fait référence à C: \ Windows \ System32; le système d'exploitation remappe de façon transparente ceci à C: \ Windows \ SysWOW64 (qui est l'endroit où les choses de 32 bits vivent).

En tant qu'application 32 bits sur Win64, vous devez spécifier le chemin complet %SYSTEMROOT%\SysNative\ServerManager.msc.

SysNative n'existe pas sur Windows x86 (il n'y a pas de correspondance inverse, au moins sur Win7 Ultimate), vous devrez donc déterminer si vous êtes sur x86 ou x64 en premier.

+0

Merci pour le tipp! Cela m'a aidé à résoudre le problème. Comme une dernière étape, j'ai également dû remplacer "ServerManager.msc" par "CompMgmtLauncher.exe", parce que le fichier .msc a été indirectement chargé par mmc.exe. J'ouvre maintenant le fichier comme ceci: Win32Api.GetWindowsDirectory() + "\ Sysnative \ CompMgmtLauncher.exe" – mkva

-1

S'il vous plaît utiliser depends.exe pour savoir quel fichier/dll est manquante.

Si elle utilise une DLL native x86/bibliothèque qui est compilé dans la version plus récente de VC++ Runtime. Installez la dernière version de VC++ sur le serveur 2008. Le dernier je crois est 2008 SP1.

+0

Non pertinent pour Process.Start –