昨晚为了写一个批处理,也要取得当前帐户的SID,网上没看到有资料,捣鼓了很久,终于出来了。

http://tsingfu.blog.51cto.com/366160/89437这篇文章给我带来启发,但是我觉得ProfileImagePath键值可能不存在或者不可靠,因为完全可以设置到没有用户名的路径上。所以我在注册表其他地方找到了SID,

 

以下代码,测试环境:WINDOWS 7 32bit,不过我的系统只有一个用户,所以不确定是否完全正确,希望有用过的朋友测试下并反馈,谢谢!

::先在HKEY_USERS\[当前帐户的SID]\Volatile Environment\下的USERNAME键值,判断是否与%username%相等,如果是得到SID
for /"tokens=*" %%a in ('REG QUERY "HKEY_USERS" //v USERNAME ^| find /"Volatile Environment"') do (
::这个时候可能有多个匹配结果,在用户列表中找USERNAME为当前帐户的键值(包含SID)
    for /"tokens=*" %%1 in ('REG QUERY "%%a" /v USERNAME ^| find /"%username%"') do (
    
::echo %%1
    SET "SID=%%a"
    
)
)
::取出SID
for /"tokens=1-4,* delims=\" %%i in ('echo %SID%') do (
SET "SID=%%j"
)

echo SID值为:%SID%
pause
exit

相关文章: