2011-12-14 279 views
4

我正在開發一個32位WinForm應用程序(目標:.NET 3.5)。我的客戶堅持要求將該應用程序安裝到「Windows \ System32 \ clientname」文件夾中,並在啓動時自動啓動。此外,應用程序必須是32位,所以我不能使用「任何CPU」。64位Windows上的32位應用程序「無法找到運行該應用程序的運行時版本」

我正在使用VS2010在Win7 x64下開發,並安裝了所有版本的.NET。當我啓動應用程序時,我收到消息「無法找到運行該應用程序的運行時版本」。 在Win7 x86上,它沒有問題。這不是應用程序本身,我100%確定安裝了所有必需的框架。

我知道在x64系統上這個文件夾不能用於32位應用程序,但正如我所說:客戶端堅持並且不會讓步。

在我明確告訴客戶不能完成之前,我想探索所有選項。我搜索了當然,也搜查這個好網站,但沒有任何幫助我的特殊情況出現了。

我的應用程序生成位於同一文件夾中的另一個32位進程。當然,在x64上也沒有工作,但我通過使用「Wow64DisableWow64FsRedirection」解決了這個問題,然後將它複製到另一個位置以便從那裏啓動它(工作正常)。 我已經完成了我的作業,但是我找不到在x64和該特定文件夾下啓動主應用程序的解決方案。

有沒有?

+0

爲什麼你不能使用任何CPU?我敢打賭,這是64位系統的問題,它根本不會損害在32位系統上的運行。 – antlersoft 2011-12-14 22:53:20

+0

客戶是否有理由希望在那裏?不想聽起來光​​顧我假設你已經向他解釋C:\ Windows是針對Windows的,而不是針對應用程序的。 – 2011-12-14 22:53:33

回答

3

在試圖解決這個問題,我創建了Win7的X64機器上的兩個文件夾:

  • C:\Windows\System32\ClientName;和
  • C:\Windows\SysWOW64\ClientName

接下來,我創建了一個簡單的x86 WinForms應用程序針對.NET 3.5。我發現如果我將可執行文件複製到C:\Windows\System32\ClientName,我得到的報告與您報告的完全相同。

但是,如果我將可執行文件複製到兩個目錄,那麼我可以從C:\Windows\System32\ClientName開始,它工作得很好。

我沒有試過這個,但我懷疑如果你有一個多裝配應用程序,你只需要將*.exe文件複製到C:\Windows\System32\ClientName。所有其他文件(和EXE)將駐留在C:\Windows\SysWOW64\ClientName目錄中。

我知道這是一個不整潔的解決方案,但客戶的要求再一次有點不同尋常。

相關問題