实际上,COM可以注册为每个用户或每台机器,因为HKEY_CLASSES_ROOT是从HKEY_CURRENT_USER \ Software \ Classes和HKEY_LOCAL_MACHINE \ Software \ Classes派生的视图。如果您运行regasm /regfile:foo.dll,您可以生成一个regfile,然后更改所有关键名称中的引用,使其成为本地用户。
在获取生成.reg文件,所有的REG键增加将是HKEY_CLASSES_ROOT。您需要将其替换为“HKEY_CURRENT_USER \ Software \ Classes”。
此外,如果您需要COM注册才能使用32位应用程序,并且您正在运行x64,那么对于HKEY_CLASSES_ROOT \ CLSID的添加,您需要在CLSID令牌之前插入“\ Wow6432Node”。
要清楚,添加到“HKEY_CLASSES_ROOT \ CLSID”变为“HKEY_CURRENT_USER \ Software \ Classes \ Wow6432Node \ CLSID”。要使其在x86上工作,只需对CLSID条目进行此更改即可。
此外,在某些情况下,您可以考虑使用免注册COM Interop,方法是为EXE创建一个清单文件,该文件使用COM服务器以使EXG可以使用ProgID/ClassID,而无需实际将注册信息写入注册表。
您是否需要注册这些程序集?我以为他们可以进入bin文件夹。 –
我们有一个项目(类库),用于将图表从网络导出到ms word,excel,powerpoint。我们需要将该项目(project.dll)dll注册到Windows注册表中。我们正在使用installshield进行此操作。 – Tarun
如果没有通过UAC提示,您无法修补用户的注册表。此提示并非旨在阻止您执行您想要执行的操作,而只是为了让用户意识到您正在对其计算机配置进行永久更改。除非意图是恶意的,否则没有任何理由隐瞒事实。 –