我遇到了一個奇怪的場景,其中32位進程聲稱其PROCESSOR_ARCHITECTURE是AMD64,導致基於該標誌做出決定的組件出現故障。PROCESSOR_ARCHITECTURE在某些32位進程中返回AMD64
我孤立它下列步驟操作:
- 在VS2010,創建庫項目
- 在項目屬性/調試選項卡,設置啓動外部程序的VS exe文件(例如C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe的)
- 請按Ctrl-F5運行,其推出的又一實例VS
- 在這第二種情況下,創建一個控制檯應用程序,並粘貼以下代碼
在主營:
Console.WriteLine(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"));
Console.ReadLine();
- 現在運行控制檯應用程序
並顯示AMD64,即使它是一個32位進程(默認爲控制檯應用程序,每生成設置) 。
問題:其他人也可以重複這個,如果可以,你能解釋一下嗎?
注意:如果你好奇,我跑VS這種方式的原因是,我使用的是實驗蜂巢二審
更新:請注意,在我的實際情況,我不看自己修改這個環境變量。相反,我使用一個組件(SQLCE)來查找它並依賴它是正確的。
PROCESSOR_ARCHITECTURE實際上是每個進程。例如如果你直接從第一個VS運行控制檯應用程序,它會說x86。請注意,我沒有自己查找env變量。我正在使用一個組件(SQLCE 4.0),它本身正在查找它(選擇正確的本機二進制文件),所以它不在我的控制之下。 – 2010-11-11 07:55:38
我已經嘗試過自己,只發現以下步驟不允許我執行。 [錯誤圖片](http://imgur.com/FOoR8.png)。顯然,該項目的構建設置目標是64位?我注意到,默認情況下,活動平臺設置爲「X64」而不是「任何CPU」。 – 2010-11-11 08:03:09
@Jeff:實際上我的默認目標是32位。奇怪的錯誤,你得到,無法解釋它!如果你將目標設置爲32位呢? – 2010-11-11 08:09:24