3

我是一名管理员,负责将软件安装到小型 PC 局域网。该软件必须分阶段安装(三个不同的可执行安装包)。

销售布偶以错误的顺序提供阶段,并且由于它们以错误的顺序安装,因此无法正确生成注册表项。

所以我需要在注册表中为每台 PC 上的每个现有用户创建一个 HKCU 条目。

我需要安装的注册表项是

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\AcmeSoft\AcmeApp]
"InstallLocation"="C:\\Program Files (x86)\\AcmeApp"
@=""

我想编写一个脚本(语言不重要,不过我熟悉 C++ 和 python),我可以在每台 PC 上运行一次,将这个新的注册表项部署到 HKCU\Software\AcmeSoft\AcmeApp 配置单元。

Regedit 显示了一个名为 HKEY_USERS 的配置单元,我怀疑它可能包含 PC 上所有用户的条目。

我可以以某种方式迭代 HKEY_USERS 并检查上述密钥并在丢失时安装它吗?谢谢。

4

2 回答 2

1

我在提供的答案中发现了几个简单的语法错误。对于那些可能需要它的人来说,这是正确的语法。

for /F  "delims=\ tokens=2,*" %t in ('reg query HKU') do 
    reg add HKU\%t\Software\AcmeSoft\AcmeApp /ve

for /F  "delims=\ tokens=2,*" %t in ('reg query HKU') do 
    reg add HKU\%t\Software\AcmeSoft\AcmeApp /v InstallLocation /d C:\\Program Files (x86)\\AcmeApp

但这并不完全正确。港大录取名单如下:

香港大学蜂巢

系统中唯一看起来是有效帐户的是:S-1-5-21-856089149-4157031032-549160387-500

但是,有很多用户登录这台机器。

PC 上的用户帐户

所以我需要一个替代方案。如果我得到它,我会在这里发布它。

更新 我找到了一个列出所有用户的命令,但这似乎是在向域控制器查询信息,该信息返回系统上的所有帐户(包括管理员、模板、非活动帐户,例如禁用帐户等)

wmic useraccount get name,sid

知道有用,但对我的目的来说太过分了。

于 2012-08-22T13:49:23.270 回答
1

如果您不反对使用简单的批处理脚本,则可以使用:

如果您愿意,您甚至可以在 HKU 之前添加一个计算机名(例如:\Computer\HKU),这样您就可以远程运行它。您必须以管理员身份运行它(提升)

for /F  "delims=\ tokens=1,*" %%t in ('reg query HKU') do reg add HKU\%%u\Software\AcmeSoft\AcmeApp /ve
for /F  "delims=\ tokens=1,*" %%t in ('reg query HKU') do reg add HKU\%%u\Software\AcmeSoft\AcmeApp /v InstallLocation /d C:\\Program Files (x86)\\AcmeApp
于 2012-08-22T11:41:07.983 回答