batch-file - 如何将 Windows 用户配置文件 SID 从注册表中提取到文本文件中?
问题描述
我有一个任务即将到来,我必须为所有计算机上的每个 Windows 配置文件手动输入HKEY_USER
键值和字符串值。这可能需要一些时间。我倾向于将它们全部自动化,或者至少自动化一些流程。
我有添加密钥过程(来自列表sids.txt
)工作:
@echo off
pushd %~dp0
for /f "usebackq tokens=*" %%A in ("SIDS.txt") do (
REG ADD "%%A\create\key\here" /f
REG ADD "%%A\create\key\here" /t REG_SZ /d "add string value here" /f
)
pause
为了进一步加快速度,我希望从这里获得一些帮助,从每个用户配置文件中获取 SID:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
对于列出的每个 SID,例如:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-2686047782-4092528985-2296408390-1413
在这些键中有一个 profile-image-path 值,其中包含 Windows 用户配置文件的名称。
我想要做的是将 Windows 配置文件名称和 sid 泵入格式如下的文本文件中,然后我可以相当快速地进行编辑,删除非 Windows 用户配置文件条目(如默认或系统帐户)并运行我上面针对列表的工作代码 - 编辑为只有一个 SIDS 列表,就像上面的工作代码一样。
S-1-5-21-2686047782-4092528985-2296408390-1413 mickey.mouse
S-1-5-21-2686047782-4092528985-2296408390-1411 Donald.duck
解决方案
最简单的方法是使用wmic useraccount
查询来完成:
wmic useraccount get name,sid | findstr /vi "SID">somefile.txt
type somefile.txt
这将列出每个帐户并将输出重定向到一个名为的文件somefile.txt
,它只会type
向您显示文件的内容。
另一种方法是查看 userprofile 目录是否存在。这应该消除系统帐户。
@for /f "delims=" %i in ('wmic useraccount get name^,sid ^| findstr /vi "SID"') do @for /F %a in ("%i") do if exist "C:\users\%a" @echo(%i>>somefile.txt
推荐阅读
- android - 无法在工作配置文件模式下以编程方式在 android 7 上安装 apk(未知来源)
- swift - Swift 协议和通用方法列表
- firebase - 如果根据初始值更改 ifelse 更新数据,则颤振文本表单字段更新数据
- email - 无需电子邮件确认即可登录 GitLab 帐户
- sql-server - 用于获取会计周数的动态 Pivot SQL 查询
- html - 为什么 Adobe XD 中的 100 像素比网站(Safari、Google Chrome 等)上的小?
- python - 遍历多个 Json 文件并将其添加到字典中
- python - 有没有办法在python中使用正则表达式找到完全匹配而不是子字符串匹配?
- flutter - 使用 Agora SDK 颤振:锁定屏幕 1 分钟后无法收听音频
- azure - 在将 nsg 流日志传输到 Azure 中不同订阅中的存储帐户时,在 Powershell 中出现“错误请求”错误