2011-09-29 114 views
0

我目前正在爲Windows Explorer設計DLL,它提供各種功能,如某些類型文件的信息和縮略圖。到目前爲止,它在Windows x64上工作正常,而且我現在正在研究32/64 bits問題和註冊過程(此過程由編寫在C#中的小型獨立程序完成)。32位和64位的Windows資源管理器插件DLL

我的理解是:

  • 64位DLL將無法與32位應用程序中工作,反之亦然
  • 因此64位的DLL將不會爲a的打開文件對話框工作32位應用程序
  • 我需要分別註冊了32個和64位版本

我的問題是:

  • 我的假設到目前爲止是否正確? 特別是我想知道如果應用程序打開的瀏覽對話框必須具有與應用程序相同的位數(或者是由某個Windows 64進程管理的對話框嗎?)
  • 假設我有一個32位和一個我的DLL的64位版本,我如何從64位程序註冊它們? (「好視窗我是一個64位的過程,但我註冊這個32個的應用程序,明白了嗎?」

我已經在讀的話題有些:

Windows 64-bit registry v.s. 32-bit registry

http://msdn.microsoft.com/en-us/library/aa384232%28v=VS.85%29.aspx

回答

3

你的理解是正確的。您需要爲32位Windows上的用戶提供32位版本,以及在WOW64下爲32位進程提供常用對話。

如何部署取決於您的安裝工具。完成此操作後,我爲來自同一源的兩個版本創建了單獨的MSI,並使用安裝它們的引導程序setup.exe。建議的做法是從MSI設置註冊表設置。然後你讓註冊表重定向在WOW64下做到這一點。

+0

感謝您的反饋。啓動第二個過程是一個很好的竅門;我仍然想知道如何從同一個程序進行註冊。 –

+0

@Julien你可以做到這一點,但你必須打開特定的註冊表視圖才能看到註冊表的正確視圖。讓註冊表重定向(以及DLL的文件重定向)爲您完成工作要容易得多。 –

+0

我想它可以手動完成,但正如你所說,依靠重定向可能會更好。特別是,我不能確定鑰匙將保持不變。所以我正在尋找一些方法來說「你好,我在註冊表中這樣做,但這是爲{32 | 64}應用程序」。 –