Inno setup 如何使用inno设置将所有用户写入其HKEY_当前用户

Inno setup 如何使用inno设置将所有用户写入其HKEY_当前用户,inno-setup,registry,Inno Setup,Registry,我正在安装必须从HKEY_CURRENT_USER\software读取的第三方软件。。。使用inno设置。 我需要将此值写入所有用户,我如何才能做到这一点?基本上,您不能这样做(以一种简单且受支持的方式)。为此,需要加载所有用户配置单元,但并非所有用户都需要加载 您可以在HKEY\U USERS\下写入默认配置文件。默认值将影响所有新用户配置文件,或者您可以在HKEY\U LOCAL\U machine下写入机器配置单元 可能首选选项是为每个用户分别运行安装程序,例如作为登录脚本的一部分。正如

我正在安装必须从HKEY_CURRENT_USER\software读取的第三方软件。。。使用inno设置。
我需要将此值写入所有用户,我如何才能做到这一点?

基本上,您不能这样做(以一种简单且受支持的方式)。为此,需要加载所有用户配置单元,但并非所有用户都需要加载

您可以在
HKEY\U USERS\下写入默认配置文件。默认值将影响所有新用户配置文件,或者您可以在
HKEY\U LOCAL\U machine
下写入机器配置单元


可能首选选项是为每个用户分别运行安装程序,例如作为登录脚本的一部分。

正如0xA3所述,您不能。其中一个主要原因是。基本上,特定用户的配置文件数据此时甚至可能不在计算机上,或者可能是一个过时的副本


如果您需要一个适用于所有用户的设置,那么最好使用HKEY_LOCAL_机器。如果您需要设置所有用户的默认设置,则将默认值存储在HKEY-LoLaLoxMeX中,并将其复制到用户配置文件中,如果它们当前不存在值。

< P>您可以考虑应用程序运行,查找当前用户密钥,如果未找到,则将向当前用户添加密钥的修复Reg消息。我有一个类似的情况,我就是这么做的。

HKEY_当前用户只是指向:HKEY_用户\安全ID(SID)的指针,因此如果您确实想这样做,那么您可以迭代所有HKEY_用户(但这只包括当前登录到系统的用户)


更好的解决方案可能是在应用程序中检查是否为HKEY_当前用户设置了设置,如果没有,则从HKEY_本地机器复制。这样,您的应用程序将处理安装后添加的新用户。

另一个原因是,安装软件后可能会添加新用户。
HKLM
默认副本为空
HKCU
是这方面的“最佳做法”。作为一名IT专业人员,这是我对安装到
程序文件中的软件的期望。每个用户安装的软件(在AppData中,如Google Chrome),我希望它会向该用户写入
HKCU
,并忽略
HKLM
HKLM
是对
HKCU
的,正如
C:\ProgramData`是对用户的
AppData`
Local
Roaming
重要说明:。默认值不是新用户配置文件的默认注册表,它是“NT授权/本地系统”的注册表。所有新用户的默认注册表位于C:\Documents and Settings\Default User\NTUSER.DAT配置单元中,可由打开和编辑regedit@zihotki:谢谢你的评论,你完全正确。这里由Raymond Chen解释:但是只有在登录后才会复制值?加载默认用户配置单元,进行更改并关闭配置单元。以新用户身份登录进行测试