如何在注册表中为所有USERS和CurrentUser分别注册条目

时间:2011-10-04 10:56:35

标签: c# winforms installshield

我想使用InstallShield Basic MSI项目基于(使用此计算机的任何人)AllUsers或仅为我(当前用户)安装REG文件中的注册表值。

如果用户选择“所有用户”,则注册表项应转到[HKEY_CLASSES_ROOT]。如果用户选择“当前用户”,则注册表项应转到HKCU \ Software \ Classes \ CLSID

请帮助?

由于

2 个答案:

答案 0 :(得分:2)

Windows Installer默认执行此操作。对于每个用户的安装,HKEY_CLASSES_ROOT会自动重定向到HKEY_CURRENT_USER \ Software \ Classes。

你可以在这里阅读更多相关信息:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa371168(v=vs.85).aspx

答案 1 :(得分:1)

InstallShield的注册表视图显示了配置单元HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE和HKEY_USER_SELECTABLE。导入您的REG文件,它将与HKEY_CURRENT_USER或HKEY_LOCAL_MACHINE关联。然后将导入的键拖到HKEY_USER_SELECTABLE配置单元中。现在,在安装过程中将根据Per-User或Per-Machine(ALLUSERS属性)创建密钥。

另外,如果你告诉InstallShield从你的DLL中提取COM数据(而不是使用你的regfile),那么COM元数据将进入COM“表”(AppId,ProgId,Class等),Windows Installer将仍然会根据Per-User / Per-Machine概念将数据记录到HKEY_LOCAL_MACHINE \ Classes或HKEY_CURRENT_USER \ Classes。