2011-09-30 4 views
1

J'essaie d'exécuter un exécutable à partir d'une application C# 32 bits (sur un système d'exploitation 64 bits), mais je reçois «Le système ne trouve pas le fichier spécifié "probablement parce que wsqmcons.exe n'existe pas dans C: \ Windows \ SySWOW64. Le fichier existe dans System32. Quelle est la meilleure façon d'exécuter wsqmcons.exe à partir du code, si possible?Exécution d'un exécutable 64 bits dans System32 à partir du code 32 bits

Process p = new Process(); 
p.StartInfo.Arguments = "-f"; 
p.StartInfo.FileName = @"C:\Windows\System32\wsqmcons.exe"; 
p.Start(); 
p.WaitForExit(); 
Verify.AreEqual(0, p.ExitCode); 
+3

Pour une solution rapide-n-sale, essayez de changer le chemin vers le: '@ "C: \ Windows \ Sysnative \ Wsqmcons.exe"'. Voir http://support.microsoft.com/kb/942589 pour plus de détails/pointeurs qui sont plus orientés vers l'API Win32, mais peuvent également aider dans .NET. –

+1

@Michael D'après http://msdn.microsoft.com/en-us/library/aa384187%28VS.85%29.aspx, il est recommandé, donc ce n'est pas si vite-n-sale après tout! Je crois que vous devriez publier ce commentaire en guise de réponse. – Steven

Répondre

2

Vous devrez désactiver la redirection du système de fichiers sur votre processus 32 bits avec le Wow64DisableWow64FsRedirection et la réactiver avec Wow64RevertWow64FsRedirection.

Questions connexes