我正在尝试使用登录脚本向我的客户端添加 Excel 插件。我检查了是否可以使用 GPO 添加它,但不幸的是,它不可以(即使您可以手动排除它们 -__- GG MS)。我之所以不直接将 .xlam 复制到插件文件夹,是因为我们有时会更新它,因此他们必须从网络驱动器访问它。我的问题是密钥位于 CURRENT_USER 下,因此我需要当前用户的 SID。现在我的问题是如何获取用户的 SID 并在 .reg 文件中使用它?
.reg 文件如下所示:
Windows Registry Editor Version 5.00
[HKEY_USERS\\****SID****\Software\Microsoft\Office\12.0\Excel\Options]
"OPEN"="\"\\****MACRO****.xlam\""
在这里获取 SID 的最简单方法是什么?
提前致谢!
答案1
我需要当前用户的 SID
您可以使用wmic
。
从命令行:
wmic useraccount where name='%username%' get sid
F:\test>wmic useraccount where name='%username%' get sid
SID
S-1-5-21-1699878757-1063190524-3119395976-1000
从批处理文件(GetSID.cmd):
@echo off
setlocal
rem use findstr to strip blank lines from wmic output
rem skip the heading
for /f "usebackq skip=1" %%i in (`wmic useraccount where name^="%username%" get sid ^| findstr /r /v "^$"`) do (
set _sid=%%i
)
echo %_sid%
endlocal
笔记:
- 批处理文件存储了 SID,
%_sid%
以供稍后需要时使用。
用法示例:
F:\test>GetSID
S-1-5-21-1699878757-1063190524-3119395976-1000
F:\test>
如何在文件中使用当前用户的 SID .reg
?
最简单的选择可能是使用reg
命令将所需的键直接添加到注册表中。
您可以编写一个批处理文件来执行以下操作:
运行
wmic
命令。将 SID 保存在环境变量中,例如
%_sid%
。我已经在上面的批处理文件中完成了此操作
GetSID.cmd
。现在在正确的位置添加适当的
reg add
命令%-sid%
以将值添加到注册表。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 登记- 读取、设置或删除注册表项和值,并从 .REG 文件保存和恢复。
- 西米克- Windows 管理规范命令。
答案2
好的,我找到了解决问题的简单方法。显然,该键也存在于 HKEY_CURRENT_USER 下,所以这是迄今为止最简单的解决方案。
但非常感谢您提供的其他解决方案!我很可能将在我的解决方案中使用您的批处理文件实现方法。
感谢您提供全面、出色且极快的解决方案,David!