在Windows2000/XP/2003系统中,每个用户帐号都对应着一个唯一的字符串,这就是安全标识符“security identifiers(SID)”,并且Windows系统也是根据SID来识别用户或组的,以及分配它们相应的访问权限。那么如何找出用户帐号对应的SID呢?下面笔者就介绍2种方法。
方法一:使用SID工具
点击“开始--运行”,在运行对话框中输入“cmd”命令,回车后弹出命令提示符窗口,切换到SID工具所在的目录下,接着输入“sid local”命令,就列出本地系统所有的用户帐号及其帐号对应的SID,这样用户就能很方便的查找到所需要的SID,如本地系统的rtj帐号,从命令执行结果可以看出,它对应的SID项目为“S-1-5-21-436374069-813497703-682003330-1004”,其中最后一段数字“1004”转换成16进制就为“3ec”,与注册表中的该帐号的标识信息对应。
小提示:用户帐号的安全标识符(SID) 永远都是唯一的,它是由计算机名、当前时间以及当前用户态线程的CPU耗费时间总和三个参数决定的。格式为:S-R-X-Y(1)-Y(2)-……-Y(N),其中S表示该字符串是SID,R是SID的版本号, X是标志符的颁发机构 (identifier authority),Y表示一系列的子颁发机构,前面几项是标志域的,最后一个Y(N)标志着域内的用户帐户和组。
方法二:使用whoami命令
whoami是Windows2000资源工具箱中的一个命令,它同样可以用来查找用户的SID。在命令提示符窗口中输入“WHOAMI /USER /GROUPS /SID”命令,接着就显示出本地系统所有的用户帐号及其帐号对应的SID,这样就能查找到所需要的帐号SID了。
小提示:用户帐号的sid信息存放注册表中,具体位置为“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users”,注意:要赋予用户有访问“SAM”项的权限,才能进行浏览。下面的十六进制项就是用来标识不同的用户帐号,以笔者机器为例,用户Administrator的为“000001F4”,guest帐号为“000001F5”,其它的每一个十六进制项都对应一个用户帐号,此外,在Names项下保存着用户帐号名。
当添加一个新用户时,系统会在“HKEY_LOCAL_MACHINE \SAM\SAM\Domains\Account\Users”下添加一个新的sid项来标记这个用户帐号,同时还会在“HKEY_LOCAL_MACHINE \SAM\SAM\Domains\Account\Users\Names”下创建一个用户名的项,而该项的类型就为这个新的sid。