Je dois copier un utilitaire psTool dans le dossier System32 lorsque mon application s'exécute.
Je suis sur Windows 7 64 bits et à chaque fois, j'essaie de copier le fichier exe vers le dossier system32 bits à travers File.Copy
, l'exe est toujours copié à SysWow64 à la place.Copie de fichier dans SysWOW64 au lieu de System32
Lorsque je mets un point d'arrêt sur le fichier destFile, le chemin est affiché comme C:\Windows\System32
mais le fichier n'y va pas (va à sysWow64). J'ai essayé le Special Folder
SystemX86
, mais le fichier va à nouveau à sysWOW64.
string sourceFile = "C:\bin\Debug\somexe.exe"
string destFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), utilityName);
File.Copy(sourceFile, destFile, true);
Des suggestions que je manque ici?
EDIT
Comme il est indiqué ci-dessous dans la réponse, il y a la redirection du système de fichiers en cours. Je développe l'application avec les paramètres par défaut de Visual Studio pour une application console sur un système d'exploitation 64 bits. Je ne suis pas sûr quels paramètres/commutateurs doivent être conservés lors de la compilation, de sorte que l'application fonctionne à la fois sur les systèmes d'exploitation 32 bits et 64 bits.
Fondamentalement, il devrait simplement définir copier le fichier à System32
seulement quel que soit ce bit OS il est.
Plus tard dans le programme, je dois accéder à l'utilitaire psTools via une ligne de commande qui n'est pas disponible si je le place dans SysWOW64. Si je fais le changement, pour utiliser 32 bits cmd.exe de SysWOW64, ce serait encore quelque chose de 64 bits spécifiques à la plate-forme, que je ne veux pas opter.
Une solution qui peut faire fonctionner l'application à la fois sur 32 bits et 64 bits sans problème? Dois-je modifier le code (comment?) Ou dois-je modifier certaines propriétés de ce projet d'application console (quelles propriétés)?
Pourquoi le copiez-vous à partir de system32 en premier lieu, quel outil de la suite PsTools essayez-vous d'exécuter? –
Copiez-le dans 'system32', sans le copier depuis. 'pskill' est le nom de l'utilitaire. – user1240679
Vous m'avez eu sur le/de la faute de frappe. Cependant, vous n'avez toujours pas répondu à la question ** pourquoi ** vous copiez 'pskill' dans le dossier' system32' au lieu de simplement le lancer depuis un autre endroit (et ajoutez-le à la variable système 'PATH' si nécessaire –