2008-12-17 7 views
0

La situation:Pourquoi Windows Vista 64 bits utilise-t-il par défaut un cmd.exe 32 bits? (Machine spécifique)

Je dois convertir notre environnement de développement actuel à partir de Windows XP   32 bits vers Windows Vista   64 bits (*). Naturellement, j'ai couru dans beaucoup d'endroits dans notre système de construction où les chemins codés en dur étaient problématiques (par exemple "C:\Program Files" devenant "C:\Program Files (x86)"). Heureusement, il existe une variable d'environnement %ProgramFiles% qui correspond au répertoire approprié en fonction du processus source (32 bits ou 64 bits). J'ai donc mis à jour les scripts de construction avec %ProgramFiles%, et j'étais sûr que ce serait la fin de tout ça.

L'environnement de génération est appelé à 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 trouvent la version x86 du répertoire Program Files et tout fonctionne très bien.

Sur toutes les autres machines 64bit que je peux trouver (y compris ma machine à la maison), C:\Windows\System32\cmd.exe est la version 64 bits, et la version 32 bits est en C:\Windows\SysWow64\cmd.exe. Les scripts de construction ne trouvent donc rien qu'ils recherchent et échouent.

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

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

Des idées ou un aperçu?

(*) S'il vous plaît accepter que je doit le faire. Je ne suis pas libre de dire pourquoi Je le fais. Ré-installer le système d'exploitation et tout à partir de zéro fonctionnerait probablement, mais il est sûrement exagéré. En outre, il était assez difficile de convaincre notre département informatique de distribuer des machines Vista!

Répondre

2

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

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

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

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

1

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 que j'ai essayées, cela lance la version 64 bits de cmd, et je ne trouve pas d'explication rationnelle pour ce comportement.

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

+0

Après vérification, le processus explorer.exe est 64bit sur toutes les machines. Je ne comprends pas comment un processus 64 bits par défaut pour lancer la version 32 bits de cmd ... :( –

0

Au lieu de %ProgramFiles%, il n'y a pas un %Programfiles(x86)% qui va toujours où vous voulez, quel que cmd.exe est en cours d'exécution? Mon Windows   XP systèmes 64 bits ont tous cela; Excusez-moi de ne pas avoir pris le temps de démarrer un système Vista.

Questions connexes