2009-11-03 168 views
1

我們有一個以Perl 32位運行的安裝程序。此程序需要獲取有關羣集資源的信息,因此它運行cluster.exe(使用反引號)並解析其輸出。64位Windows 2008上的32位cluster.exe

在Windows Server 2003上,這很順利,因爲在syswow64下存在一個32位版本的cluster.exe。但是,這樣的32位版本在Windows Server 2008上不存在,因此cluster.exe的反引號運行表示無法找到這樣的可執行文件,因爲32位進程在syswow64下查找它。

有人可以想一種方法,我們可以繞過這個問題,並獲得羣集資源信息? 一種手動方法是從system32複製64位版本的cmd.exe,然後使用「/ c cluster.exe」運行它,該程序將在system32下啓動64位cluster.exe。 (複製cluster.exe將無法正常工作,因爲它無法找到羣集緩存。)但是,這僅適用於手動解決方法,而不是所有用戶的解決方案。

是否有另一種方法導致Windows啓動64位cluster.exe?

感謝,
splintor

PS
類似的問題是asked on technet一個月前,卻沒有得到一個真正的答案。

+0

屬於服務器故障。 – Richard 2009-11-03 16:31:05

+0

嗨,理查德,我沒有得到您的評論。你能解釋一下嗎? – splintor 2009-11-03 18:30:52

回答

0

我發現了兩種可能的解決方案: 一種方法是編寫一個名爲cluster.exe的小型64位應用程序,它只需調用%SystemRoot%\ System32 \ cluster.exe(使用system()),並將其放在%SystemRoot %\ Syswow64資料。由於它是一個64位應用程序,因此將調用正確的64位cluster.exe應用程序。

另一種解決方案是使用sysnative重定向(如解釋here),所以現在我們檢查 - 如果的%SystemRoot%\ System32下 \ Cluster.exe的存在,我們使用它,否則,如果的%SystemRoot%\ Sysnative \我們使用cluster.exe存在,否則我們使用普通的cluster.exe。

注意:這與剛剛得到答案的this telnet.exe problem非常相似。