Warum ist Windows Vista 64-Bit unter Verwendung eines 32-Bit cmd.exe standardmäßig? (Maschinenspezifisch)

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

Frage

Die Situation:

Ich brauche unsere aktuelle Entwicklungsumgebung von Windows XP 32-Bit Windows Vista 64-bit (*) zu konvertieren. Natürlich, ich habe in viele Orte in unserem Build-System laufen, wo hartcodierte Pfade waren problematisch (z „C:\Program Files“ Werden „C:\Program Files (x86)“). Glücklicherweise gibt es eine %ProgramFiles% Umgebungsvariable, die in dem richtigen Verzeichnis-Karten basierend auf dem Quellprozess (32-Bit oder 64-Bit). So aktualisierte ich den Build-Skripte mit %ProgramFiles%, und ich war sicher, dass es das Ende, dass sein würde.

Die Build-Umgebung wird von der Kommandozeile aufgerufen (C:\Windows\System32\cmd.exe).

Das Problem: Auf einer bestimmten Maschine (nämlich bei der Arbeit meiner Dev-Maschine), stellt sich heraus, dass C:\Windows\System32\cmd.exe eigentlich ein 32-Bit-Prozess, so dass die Skripte die x86 Version des Program Files Verzeichnis und alles funktioniert super.

Auf jeder anderen 64-Bit-Maschine, die ich (einschließlich meiner Hauptmaschine) finden, C:\Windows\System32\cmd.exe ist die 64-Bit-Version und die 32-Bit-Version ist in C:\Windows\SysWow64\cmd.exe. So ist der Build-Skripte nicht finden kann, etwas für sie suchen und scheitern.

Ich verstehe jetzt, dass die 32-Bit-cmd.exe explizit aufgerufen werden soll, wenn das ist, was Sie brauchen, und Sie standardmäßig ein 64-Bit-cmd.exe bekommen. Typischer Fall von WORKSFORME ...

Die Frage ist, , was mit der Maschine passiert, wo dies nicht der Fall ist? Warum erhalte ich eine 32-Bit standardmäßig auf einer Maschine cmd.exe aber nicht auf andere? In allen Fällen bin ich ausdrücklich C:\Windows\System32\cmd.exe vom Start|Run Menü Ausführung, sondern nur unterschiedliche Ergebnisse auf einer Maschine immer . Alle werden auf die gleiche Ausgabe von Vista 64bit ausgeführt wird.

Alle Gedanken oder Einsicht?

(*) Bitte akzeptieren Sie, dass I muss tun. Ich bin nicht frei, zu sagen, Warum ich dies tue. Re-Installation des OS und alles von Grund auf neu wahrscheinlich funktionieren würde, aber es ist sicher übertrieben. Außerdem war es schwer genug, um unsere IT-Abteilung zu überzeugen Vista-Maschinen zu geben!

War es hilfreich?

Lösung 2

Ich habe endlich das Problem, und wie erwartet ist es ganz einfach: Benutzerfehler. Explorer (das ist ein 64-Bit-Prozess ist selbst unter Windows Vista 64-bit) startet 64-Bit-Eingabeaufforderungen in der Standardeinstellung. Wenn Sie eine 32-Bit-CMD.EXE wollen, müssen Sie explizit C:\Windows\SysWoW64\CMD.EXE verweisen.

Der Grund, diese auf meinem System gut funktioniert, ist, dass ich für die meisten meiner Kommandozeilennutzung Far Manager verwenden, die 32-Bit (also startet er 32-Bit-Eingabeaufforderungen). Wenn ich überprüft habe ich verwirrt muss ein 32-Bit-Fenster für einen 64-Bit-Fenster (schließlich sehen sie das gleiche!) Und eine dumme Frage gestellt.

Der in Sente, das Problem mit %ProgramFiles(x86)% ist, dass es nicht auf Windows Vista 32-Bit vorhanden ist, denn das wäre wirklich einfacher gewesen.

Ah, es gibt nichts wie eine öffentliche Posting ist ein Dummkopf von selbst zu machen ...:)

Andere Tipps

Wenn Sie von einem 32-Bit-Prozess cmd lief, dann würden Sie die 32-Bit-cmd wegen Dateiumleitung ( http://msdn.microsoft.com/en-us/library/aa384187.aspx ). Sie erhalten, die 32-Bit-Version von CMD, wenn Sie es aus dem Explorer laufen?

cmd.exe wird aus dem Startmenü auf beiden Maschinen gestartet. Genaue Repro:

  • Klicken Sie auf den Start Orb
  • Geben Sie "cmd", nur ein Spiel kommt (c:\windows\system32\cmd.exe)
  • Starten Sie es.

Auf meiner Arbeitsmaschine, es startet die 32-Bit-Version (wie durch den Task-Manager zeigte, hat es *32 auf den Namen in dem Processes Registerkarte angehängt). Auf allen anderen 64 Maschinen Vista Ich habe versucht, startet dies die 64-Bit-Version von cmd, und ich kann nicht eine rationale Erklärung für dieses Verhalten finden.

Ich habe nicht geprüft, ob explorer.exe selbst 32bit oder 64bit auf der betroffenen Maschine war, vielleicht ist dies im Zusammenhang ... Danke für den Hinweis.

Statt %ProgramFiles%, ist nicht ein %Programfiles(x86)% das immer geht, wo Sie wollen, unabhängig davon, welche cmd.exe ausgeführt wird? Mein Windows XP 64-Bit-Systemen alle haben das; entschuldigen Sie mich für nicht die Zeit nehmen, ein Vista-System zu booten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top