|
本帖最后由 zts59 于 2023-10-12 23:58 编辑
批处理如下:
@echo off
:start1
set /p user1=输入用户名:
net user %user1% >nul 2>nul && goto next1 || echo 用户不存在.
goto start1
:next1
::获取用户的SID
::wmic useraccount where name="%user1%" get sid
for /f "skip=1" %%i in ('wmic useraccount where name="%user1%" get sid') do SET "USID=%%i"
echo %USID%
::查询用户是否已经登陆
REG QUERY HKEY_USERS /F %USID% /K /E && goto exec1 || goto next2
:next2
::从注册表读取用户注册表文件NTUSER.DAT路径
for /f "skip=1 takens=3" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%usid%" /v ProfileImagePath') do set "u_dat=%%a"
echo %u_dat%
::装载用户注册表
reg load HKEY_USERS\%USID% %u_dat%\ntuser.dat
:exec1
::对用户的注册表操作,外部命令SETACL.EXE要求管理员权限才能执行,对用户注册表的权限进行变更
setacl -on HKEY_USERS\%usid%\Software -ot reg -actn rstchldrn -rst dacl,sacl
ping 127.0.0.1 -n 3 >nul
reg unlod HKEY_USERS\%usid%
以上是修改用户注册表的批处理
对于FOR中的需要执行的命令一直没有办法成功,好像是要加转义符或别的什么,不知道怎么处理,望高手详解,谢谢
|
|