当我试图通过导入HKEY_CURRENT_USER文件将键写入.reg时,我需要帮助理解.reg创建的注册表项。
我在NSIS中编写了一个安装程序,它为标准用户安装软件,不需要管理员身份验证。安装程序只为当前用户安装软件。
我的软件包含两个使用COM的DLL,所以必须注册它们。但是,由于我的安装程序不请求Admin身份验证,所以我不能使用regasm。相反,我使用的是本文中描述的.reg文件导入技术:
实际上,我使用RegAsm开关运行/regfile来创建.reg文件。然后,我将替换
[HKEY_CLASSES_ROOT\
使用
[HKEY_CURRENT_USER\
这些是RegAsm用HKEY_CLASS_ROOT创建的键(然后我用HKEY_CURRENT_USER替换它):
HKEY_CURRENT_USER\Software\Classes\MyDllLibrary.clsMyClass HKEY_CURRENT_USER\Software\Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C} HKEY_CURRENT_USER\Software\Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32\1.0.0.0 [HKEY_CURRENT_USER\Software\Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\Implemented类别{62C8FE65-4 4EBB HKEY_CURRENT_USER\Software\Classes\MyDllLibrary.clsMyClass2 HKEY_CURRENT_USER\Software\Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5} HKEY_CURRENT_USER\Software\Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32\1.0.0.0 [HKEY_CURRENT_USER\Software\Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\Implemented类别{62C8FE65-4EBB-
导入上面的.reg文件后,让我感到惊讶的是,当我在注册表中搜索dll名称时,我发现已经在以下3处创建了键:
HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_USERS
我原以为只会在HKEY_CURRENT_USER中找到密钥。
这提出了两个问题:
[HKEY_CURRENT_USER
使用
[-HKEY_CURRENT_USER
问题是,我的卸载程序只是删除HKEY_CURRENT_USER键,而HKEY_CLASSES_ROOT和HKEY_USERS键则被抛在后面。
我试图理解为什么Windows要编写这些附加的键,以及是否需要在卸载时清理它们。
下面是Windows创建条目的列表:
Computer\HKEY_CLASSES_ROOT\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32 Computer\HKEY_CLASSES_ROOT\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32\1.0.0.0 Computer\HKEY_CLASSES_ROOT\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32 Computer\HKEY_CLASSES_ROOT\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32\1.0.0.0 Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID{3B8612DE-E 333-31D5-86DA-9ED6D4B14A1C}\InprocServer32 32 Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32\1.0.0.0 Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32 Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32\1.0.0.0计算机\HKEY_USERS\S-1-5-21-529589846-3326646294-2506018130-1001\SOFTWARE\Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32 Computer\HKEY_USERS\S-1-5-21-529589846-3326646294-2506018130-1001\SOFTWARE\Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32\1.0.0.0 Computer\HKEY_USERS\S-1-5-21-529589846-3326646294-2506018130-1001\SOFTWARE\Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32电脑\HKEY_USERS1-5-21-529589846-3326646294-2506018130-1001\SOFTWARE\Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32\1.0.0.0 Computer\HKEY_USERS\S-1-5-21-529589846-3326646294-2506018130-1001_Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32 Computer\HKEY_USERS\S-1-5-21-529589846-3326646294-2506018130-1001_Classes\CLSID{3B8612DE-E333-31D5-86DA-9ED6D4B14A1C}\InprocServer32\1.0.0.0 Computer\HKEY_USERS\S-1-5-21-529589846-3326646294-2506018130-1001_Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32 Computer\HKEY_USERS\S-1-5-21-529589846-3326646294-2506018130-1001_Classes\CLSID{FCE641D6-51C1-3648-AB43-C1F9BB812FC5}\InprocServer32\1.0.0.0
请帮助我理解为什么创建这些密钥,如果有任何方法来清理他们使用reg文件导入技术,我被迫使用。
期待你的洞察力。
马太福音
https://stackoverflow.com/questions/70935522
复制相似问题