2010-09-28 32 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