2009-06-16 80 views
4

我們需要在64位Vista上運行32位版本的遠程桌面客戶端,因爲我們的產品的一部分與它集成在一起,並通過虛擬通道與終端服務器端應用進行通信。該集成加載了一些第三方32位驅動程序,並且無法在64位進程中加載​​32位dll。如何強制32位版本的遠程桌面客戶端在64位Vista上運行?

通常,從命令行運行32位版本的Windows應用程序非常容易,例如,運行窗口:

C:\Windows\SysWOW64\Notepad.exe 

你可以告訴大家,這個過程是32位在任務監視器\進程檢查,因爲這將有一個32 *文件名旁邊。

但是,遠程桌面客戶端(mstsc.exe)不想玩球。它始終運行從C:\ Windows \ System32 \ mstsc.exe的64位版本,無論我如何啓動它(運行窗口,32位cmd窗口等)。我已經嘗試編寫一個32位的C++程序來創建它(通常子進程也是32位),但這不起作用。

我也打過電話:

Wow64DisableWow64FsRedirection 
Wow64RevertWow64FsRedirection 

前和開始後的mstsc.exe但這並沒有幫助。

任何人都知道解決這個問題的方法?

[編輯] 我已經用進程監視器做了一些進一步的調查,似乎32位版本的mstsc確實先啓動,但是這樣會創建第二個64位進程並關閉32位版本。

+1

這可能對serverfault.com – steamer25 2009-06-16 19:35:05

+0

屬於我問上serverfault問題,但還沒有找到答案。由於這是一個相當低水平的問題,我希望SO社區能夠提供幫助。 – 2009-06-16 19:46:48

回答

3

你的問題很困惑(1)。系統上的每個可執行文件都被編譯爲或者作爲32位,作爲64位可執行文件。 如果有一個64位可執行文件,那麼不管你如何調用它:從32位命令窗口,從「運行」菜單或從另一個32位程序;它會以總是作爲64位進程運行。

通過在dumpbin /HEADERS mstsc.exe的輸出中查找x64,可以檢查可執行文件是32位還是64位。

您需要下載並安裝mstsc.exe的32位版本。實際上,我認爲mstsc.exe在很大程度上與安裝無關,因此您可能只需將其從32位系統中複製並運行即可。

UPDATE:
eran指出調用32位mstsc.exe直接不能解決問題,因爲mstsc檢測到它是一個64位的系統上運行,並且reinvokes自身的64位版本。我不知道它爲什麼這樣做,或者如何阻止它做到這一點。如果你這樣做,請編輯這個答案。

(1)微軟通過航運許多可執行如 32和64位版本,以及神奇重新映射路徑,以便一個或另一個被發現大大有助於這種混亂;通常在顯然是相同的路徑名。但這只是「煙霧繚繞」,實際上路徑名稱總是不同。

+1

安裝了mstsc.exe的兩個版本。 C:\ Windows \ SysWOW64 \ mstsc.exe中的32位版本和C:\ Windows \ System32 \ mstsc.exe中的64位。 我試着將版本從SysWOW64複製到我的開發機器上,並做了一個dumpbin/headers並確認它是32位的。 – 2009-06-17 09:04:14

0

你有沒有嘗試舊版本(比如從Windows 2000)呢?

0

想想吧,掛鉤IsWow64Process()返回0可能工作。

相關問題