找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 36318|回复: 5

[系统相关] 怎样用批处理获取系统中当前账户的SID?

[复制链接]
发表于 2008-10-28 18:39:43 | 显示全部楼层 |阅读模式
在windows平台下 因为需要绿化一个软件 所以需要用bat取得当前账户的sid
曾经想过用系统盘下回收站的名字来获取sid

  1. for /f "delims=:" %%a in ('dir /a:hs %SystemDrive%\RECYCLER\S-1-5-21* /b') do set sid=%%a
复制代码


但是经过朋友测试 在其他人的机器上总是失败···
请问有没有另外的方法去获取系统里当前用户的sid??
发表于 2010-11-7 13:24:54 | 显示全部楼层
昨晚为了写一个批处理,也要取得当前帐户的SID,网上没看到有资料,捣鼓了很久,终于出来了,WINDOWS 7下测试,不过我的系统只有一个用户,所以不确定是否完全正确

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

  13. echo SID值为:%SID%
  14. pause
  15. exit
复制代码


请高手指教~挖坟,留爪给后来人测试
发表于 2010-11-7 13:55:44 | 显示全部楼层
运行wmic的帐户可能需要管理员权限
  1. @echo off
  2. for /f "delims=" %%a in ('wmic userAccount where "Name='%userName%'" get SID /value') do call set %%a >nul
  3. echo %sid%
  4. pause
复制代码
发表于 2010-11-7 14:10:44 | 显示全部楼层
good!谢谢版主~~
wmic还真是第一次见到,学习了,好久没到论坛,一来又学到新知识了
发表于 2017-4-13 14:13:44 | 显示全部楼层
  1. WHOAMI /USER
复制代码
发表于 2024-12-18 15:10:46 | 显示全部楼层
WHOAMI /USER /FO CSV /NH
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 15:04 , Processed in 0.017766 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表