2010-09-28 34 views
5

在.rgs文件中,有一些註冊表信息,我想知道.rgs文件中的信息如何添加到regetry中?.RGS文件如何工作

我有一個項目AAA,它會生成文件AAA.DLL,並有一個文件xxx.rgs包含註冊表信息,並AAA.DLL建成,那麼它會被部署到另一臺機器B,所以我不知道如何在機器B上添加註冊信息,是否需要使用regsvr32命令註冊AAA.dll?

回答

6

通常你的代碼調用CComModule::UpdateRegistryFromResource(),它反過來將控制權交給一個在ATL中實現的特殊機制來完成這項工作 - 解析通過將.rgs文件嵌入模塊並編輯註冊表而產生的資源。 ATL帶有源代碼,所以你可以閱讀它是如何完成的。

+2

另外它像使用ATL lloks是使用.rgs文件的唯一預期方式:http://stackoverflow.com/questions/1594283/is-there-a-document-on-rgs-files-syntax – sharptooth 2010-09-28 08:14:51

+0

我有一個項目AAA,它將生成文件AAA.DLL,並且有一個文件xxx.rgs包含註冊表信息,並且AAA.DLL被構建,然後它將被安裝在另一臺機器B中,所以我想知道如何機器B中添加的註冊信息,是否需要使用regsvr32命令註冊AAA.dll? – 2010-09-28 08:29:52

+3

@Carlos_Liu:你的DLL項目通常會有一個.rc文件,它將包含對.rgs文件的引用。當編譯DLL時.rgs文件的內容被emdebbed作爲資源。後來你調用regsvr32,它加載DLL,運行'DllRegisterServer()',然後調用'CComModule :: UpdateRegistryFromResource()',從該DLL的資源加載.rgs文件內容,解析它並修改註冊表。 – sharptooth 2010-09-28 08:46:53