2008-12-17 84 views
0

情況:爲什麼Windows Vista 64位默認使用32位cmd.exe? (機專用)

我需要我們目前的發展環境,從Windows轉換  XP 32位到Windows Vista的  64位(*)。當然,我碰到很多在我們的構建系統中的硬編碼路徑是有問題的地方(例如「C:\Program Files」變成「C:\Program Files (x86)」)。幸運的是,有一個%ProgramFiles%環境變量映射到基於源進程(32位或64位)的正確目錄。所以我用%ProgramFiles%更新了構建腳本,並且我確信它會是最後一個。

構建環境從命令行(C:\Windows\System32\cmd.exe)調用。

問題: 在一個特定的計算機(即我的開發機在工作),事實證明,C:\Windows\System32\cmd.exe實際上是一個32位的過程,所以劇本找到x86版本Program Files目錄,一切偉大工程。

在我能找到的每臺其他64位機器上(包括我的家用機器),C:\Windows\System32\cmd.exe是64位版本,而32位版本是C:\Windows\SysWow64\cmd.exe。所以構建腳本找不到任何他們正在尋找和失敗的東西。

我現在明白了,32位cmd.exe應稱爲明確,如果這就是你所需要的,默認情況下你會得到一個64位cmd.exe。的WORKSFORME典型案例......

問題是,發生了什麼機器在那裏,這是不是真的?爲什麼我在一臺機器上默認獲得32位cmd.exe,但在其他機器上沒有?在任何情況下,我明確地執行C:\Windows\System32\cmd.exeStart|Run菜單,但得到不同的結果一臺機器只上。所有的都運行相同版本的Vista 64位。

任何想法或見解?

(*)請接受我必須做到這一點。我不能隨便說爲什麼我這樣做。重新安裝操作系統和一切從頭開始可能會起作用,但它肯定是矯枉過正。此外,說服IT部門放棄Vista機器已經非常困難了!

回答

2

我終於找到了問題,並如預期的那樣很簡單:用戶錯誤。資源管理器(Windows本身是一個64位的進程,在Windows   Vista 64位上)默認啓動64位命令提示符。如果您需要32位CMD.EXE,則必須明確引用C:\Windows\SysWoW64\CMD.EXE

在我的系統上工作得很好的原因是我對我的大多數命令行用法使用了遠程管理器,這是32位(因此它啓動了32位命令提示符)。當我證實我必須爲32位窗口混淆64位窗口(畢竟他們看起來一樣!),並問了一個愚蠢的問題。

死在Sente中,%ProgramFiles(x86)%的問題在於它不存在於Windows   Vista 32位,因爲那樣會更簡單。

啊,沒有什麼比一個向公衆公佈,以使自己出醜... :)

1

cmd.exe從兩臺機器的開始菜單中啓動。精確攝製:

  • 單擊開始球
  • 類型 「cmd」,只有一場比賽來了(c:\windows\system32\cmd.exe
  • 啓動它。

對我的工作的機器,它推出的32位版本(由任務管理器所證實,它已經*32追加到名稱中Processes標籤)。在我嘗試過的所有其他Vista 64機器上,這將啓動64位版本的cmd,並且我找不到這種行爲的合理解釋。

我還沒有檢查,如果explorer.exe本身是受影響的機器上32位或64位,也許這是相關...感謝提示。

+0

覈實後,Explorer.exe進程是所有機器上64位。我不明白64位進程如何默認啓動cmd的32位版本...... :( – 2008-12-17 13:22:03

0

而不是%ProgramFiles%,是不是有一個%Programfiles(x86)%總是去你想要的地方,無論哪個cmd.exe正在運行?我的Windows   XP 64位系統都有這個功能;請原諒我不花時間啓動Vista系統。

相關問題