• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗中...

曾经的程序员。ASP.NET/C#, JavaScript, PL/SQL, T-SQL; 工具: VS2003/2005, Oracle, SQLServer; 偶尔写点CSS, 批处理.
头脑中经常有新想法, 可惜没有去实现.
Never give up.
Never get into a fight with a pig. Both of you will get dirty. But the pig actually enjoys it.
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

用批处理获取系统中当前账户的SID

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

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

 

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

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

echo SID值为:%SID%
pause
exit


在论坛http://bbs.bathome.net/viewthread.php?tid=2334&pid=64044上回帖后,版主提供了一种更加便捷的方法:

::运行wmic的帐户可能需要管理员权限
@echo off
for /f "delims=" %%a in ('wmic userAccount where "Name='%userName%'" get SID /value') do call set %%a >nul
echo %sid%
pause


 

posted on 2010-11-07 14:04  jes  阅读(2715)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3