我尝试编译批处理文件以获取当前用户的userID,然后使用输出删除某个注册表项。
我发现这是为了获取当前登录用户的SID:
wmic useraccount其中name ='%username%'得到sid
这完美地运作并且给了我:
SID
S-1-5-21-XXXXX-XXXXX-XXXX-XXX
现在我想使用S-1-5-21 ....等删除当前登录用户的某个注册表项,所以S-1-5-21等我怎么能去做?或者是否有更简单的方法,能够确定当前的SID并因此删除密钥?
谢谢你!答案 0 :(得分:1)
试试这个:
@echo off
wmic useraccount where name='%username%' get sid > temp.txt &more temp.txt > temp2.txt &del temp.txt
for /F "tokens=*" %%A in (temp2.txt) do set "userID=%%A"
del temp2.txt
echo %userID%
pause
您可以在此代码后使用%userID%变量。
请注意,由于wmic解析输出的方式
,您需要使用更多答案 1 :(得分:1)
假设您要删除注册表项...
HKEY_USERS\[SID-OF-USER]\test
......这个脚本应该删除它:
@ECHO OFF
SET USERNAME=SomeUserName
:: retrieve user's SID, store in file. NOTE: a user can have more than 1 SID.
wmic useraccount where name='%USERNAME%' get sid | FINDSTR "^S-" > tmp.txt
:: load result into variable. NOTE: this will load the first line only.
SET /P SID_=<tmp.txt
:: remove spaces which turned out to be appended at the end.
SET SID=%SID_: =%
:: delete key in the registry (will probably required elevated privileges)
:: the /F causes reg.exe not to ask for confirmation
REG DELETE "HKEY_USERS\%SID%\test" /F
:: cleanup
DEL tmp.txt
我不知道“确定当前SID并删除密钥”的简单方法。