我的安装程序需要管理员权限。在安装过程中,一些值将写入当前登录用户的注册表的HKCU树。但是,当此用户帐户是所谓的标准帐户时,用户必须在安装程序启动时指定管理员帐户的凭据。然后将值写入与此管理员帐户相关的HKCU树,而不是当前登录用户的HKCU。 当安装程序想要将一些数据写入本地AppData并希望在桌面上创建快捷方式时,会出现同样的问题。
我该如何规避这个?
答案 0 :(得分:2)
这是因为您使用的是每台计算机上安装的数据,该数据位于每个用户位置(HKEY_CURRENT_USER)。
正确的方法是使用仅按用户位置的每用户安装或仅使用每台计算机位置的每台计算机安装(HKEY_LOCAL_MACHINE而不是HKEY_CURRENT_USER)。
答案 1 :(得分:1)
如果您要求管理员权限,通常意味着您正在为所有用户进行系统范围/计算机安装。在创建这种类型的安装程序时,写入HKCU或%USERPROFILE%并不是一个好主意,这不仅仅是因为您最终可以为“错误的用户”执行操作,而且最终只为该用户初始化安装。并非所有用户。
我建议您将此常用数据写入HKLM\Software\YourCompany\YourApp\CommonData
和/或<CSIDL_COMMON_APPDATA|CSIDL_PROGRAM_FILES>\YourCompany\YourApp\CommonData
,然后在用户首次运行时将此数据导入应用程序。
您可能还需要考虑创建每用户安装程序(例如Chrome),但这意味着您可以仅写入HKCU和%USERPROFILE%!