【问题标题】:how does the .RGS file works.RGS 文件如何工作
【发布时间】:2011-04-18 04:04:12
【问题描述】:

.rgs文件中有一些注册表信息,我想知道.rgs文件中的信息是如何添加到注册表中的?

我有一个项目 AAA,它会生成文件 AAA.DLL,并且有一个文件 xxx.rgs 包含注册信息,并且AAA.DLL被构建,然后它将被部署到另一台机器B,所以我不知道如何在机器B上添加注册信息,我需要使用regsvr32命令注册AAA.dll吗?

【问题讨论】:

    标签: com registry atl rgs


    【解决方案1】:

    通常,您的代码调用CComModule::UpdateRegistryFromResource(),后者又将控制权传递给在 ATL 中实现的特殊机制,该机制完成这项工作 - 解析通过将 .rgs 文件嵌入到模块中产生的资源并编辑注册表。 ATL 带有源代码,因此您可以阅读它是如何完成的。

    【讨论】:

    • 另外,使用 ATL 似乎是使用 .rgs 文件的唯一预期方式:stackoverflow.com/questions/1594283/…
    • 我有一个项目AAA,它会生成文件AAA.DLL,还有一个包含注册表信息的文件xxx.rgs,生成AAA.DLL,然后安装在另一台机器B中,所以我想知道如何在机器B中添加注册信息,我需要使用regsvr32命令注册AAA.dll吗?
    • @Carlos_Liu:您的 DLL 项目通常会有一个 .rc 文件,其中包含对该 .rgs 文件的引用。编译 DLL 时,.rgs 文件内容被嵌入为资源。稍后您调用 regsvr32,它会加载 DLL,运行 DllRegisterServer(),后者又调用 CComModule::UpdateRegistryFromResource(),后者从该 DLL 的资源中加载 .rgs 文件内容,对其进行解析并修改注册表。
    • 在机器B上,我需要使用regsvr32.exe命令注册它,对吗?还有其他方法可以注册该 DLL 吗?
    • 您应该能够使用免注册 COM(也称为并行程序集)来避免使用 regsvr32。不过,它的文档记录不是很好。
    猜你喜欢
    • 2015-10-04
    • 2010-10-09
    • 2011-08-09
    • 2010-12-08
    • 2012-07-31
    • 2010-12-17
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多