在LOCAL_MACHINE中注册一个Dll

时间:2012-09-14 08:44:10

标签: c++ com registry

我想将我的Dll注册到注册表中的特定路径,而不是通常需要的默认路径。我是Windows的新手并不了解它。任何人都可以告诉我在我的代码中需要提及的所有内容,或者是否有任何可以添加到其中的内容,以便我的dll在HKEY_LOCAL_MACHINE中获得寄存器。

3 个答案:

答案 0 :(得分:1)

你为什么要那样做? COM dll必须在HKEY_CLASSES_ROOT注册,其他任何事情都没有意义。

原因是当某些其他组件需要实例化您的COM服务器时,他们通常会调用CoCreateInstance API,它将在注册表的HKCR配置单元中查找类信息,而不是其他地方。如果你在别的地方注册你的班级,那么没有其他组件能够找到它,就像它根本没有注册一样。

答案 1 :(得分:0)

您需要使用Win32 API Registry functions

  1. 使用RegCreateKeyEx
  2. 创建(如果存在,则打开)密钥
  3. 使用RegSetValueEx
  4. 设置值
  5. 使用RegCloseKey
  6. 关闭注册表项

    另见some sample code

答案 2 :(得分:0)

你需要通过“注册”澄清你的意思。

COM是一个规范,如果要为COM注册组件,则需要遵循规范。这意味着HKEY_LOCAL_MACHINE\SOFTWARE\Classes。在任何其他地方注册COM服务器是没有意义的,因为没有什么能找到它。

如果你的意思是“注册”,那么请澄清。