Pourquoi Windows Vista 64 bits en utilisant un cmd.exe 32 bits par défaut? (Spécifique à la machine)

StackOverflow https://stackoverflow.com/questions/373351

Question

La situation:

Je dois convertir notre environnement de développement actuel de Windows XP 32 bits vers Windows Vista 64 bits (*). Naturellement, j'ai rencontré beaucoup d'endroits dans notre système de construction où les chemins étaient problématiques hardcoded (par exemple « C:\Program Files » devenir « C:\Program Files (x86) »). Heureusement, il existe une variable d'environnement %ProgramFiles% qui mappe dans le répertoire approprié en fonction du processus de source (32 bits ou 64 bits). Alors je mis à jour les scripts avec construction %ProgramFiles%, et je suis sûr que ce serait la fin de cela.

L'environnement de construction est appelée à partir de la ligne de commande (C:\Windows\System32\cmd.exe).

Le problème: Sur une machine spécifique (à savoir ma machine de dev au travail), il se avère que C:\Windows\System32\cmd.exe est en fait un processus 32 bits, de sorte que les scripts trouver la version x86 du répertoire Program Files et tout fonctionne très bien.

Sur toutes les autres machines 64bit je peux trouver (y compris ma machine à domicile), C:\Windows\System32\cmd.exe est la version 64 bits et la version 32 bits est en C:\Windows\SysWow64\cmd.exe. Ainsi, les scripts de compilation ne peuvent pas trouver tout ce qu'ils cherchent et ne parviennent.

Je comprends maintenant que le cmd.exe 32bit doit être appelé explicitement si c'est ce dont vous avez besoin, et par défaut, vous obtenez un cmd.exe 64bit. cas de WORKSFORME typique ...

La question est , ce qui est arrivé à la machine où ce n'est pas vrai? Pourquoi suis-je obtenir un 32bit cmd.exe par défaut sur une machine, mais pas sur d'autres? Dans tous les cas j'exécute explicitement C:\Windows\System32\cmd.exe dans le menu Start|Run mais obtenir des résultats différents sur une seule machine . Tous sont en cours d'exécution de la même édition de Vista 64bit.

Toutes les pensées ou des idées?

(*) S'il vous plaît accepter que je doivent faire. Je ne suis pas libre de dire pourquoi Je fais cela. La réinstallation du système d'exploitation et tout à partir de zéro serait probablement travailler, mais il est certainement exagéré. Par ailleurs, il était assez difficile de convaincre notre service informatique pour donner des machines Vista!

Était-ce utile?

La solution 2

Je l'ai enfin trouvé le problème, et comme prévu, il est assez simple: erreur de l'utilisateur. Explorer (qui lui-même est un processus 64 bits sous Windows Vista 64 bits) lance la commande 64 bits invites par défaut. Si vous voulez un CMD.EXE 32 bits, vous devez faire référence explicitement C:\Windows\SysWoW64\CMD.EXE.

La raison pour laquelle cela a fonctionné très bien sur mon système que j'utilise Far Manager pour la plupart de mon utilisation de ligne de commande, qui est de 32 bits (donc il lance les invites de commande 32 bits). Quand je vérifiais que je devais avoir confondu une fenêtre de 32 bits pour une fenêtre de 64 bits (après tout, ils regardent la même chose!) Et a posé une question stupide.

Die Sente, le problème avec %ProgramFiles(x86)% est qu'il n'existe pas sur Windows Vista 32 bits, car cela aurait vraiment été plus simple.

Ah, il n'y a rien comme un affichage public de faire un fou de vous-même ...:)

Autres conseils

Si vous RAN cmd à partir d'un processus 32 bits, vous obtiendrez les cmd 32 bits en raison de la redirection de fichier ( http://msdn.microsoft.com/en-us/library/aa384187.aspx ). Avez-vous la version 32 bits de CMD lorsque vous l'exécutez à partir d'Explorer?

cmd.exe est lancé à partir du menu Démarrer sur les deux machines. repro exact:

  • Cliquez sur Démarrer Orb
  • Tapez "cmd", seul un match arrive (c:\windows\system32\cmd.exe)
  • lancement.

Sur ma machine de travail, il lance la version 32 bits (comme le démontre le Gestionnaire des tâches, il a *32 ajouté au nom dans l'onglet Processes). Sur toutes les autres machines Vista 64 J'ai essayé, cela lance la version 64 bits de cmd, et je ne peux pas trouver une explication rationnelle de ce comportement.

Je n'ai pas vérifié si explorer.exe lui-même était 32bit ou 64bit sur la machine affectée, cela est peut-être lié ... Merci pour l'astuce.

Au lieu de %ProgramFiles%, n'est pas là un %Programfiles(x86)% qui va toujours où vous voulez, quelle que soit cmd.exe est en marche? Mes systèmes Windows XP 64 bits ont tous que; Excusez-moi de ne pas prendre le temps de démarrer un système Vista.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top