WSH(VBScript)を使って、WindowsユーザアカウントのSIDを取得する方法です。
WMIを使ってやる方法のサンプルがあってので、それを使ったらすんなりできました。
(なお、WMIクエリはWMI Code Creator を使うとわりと簡単に作成できます。)
↓はコマンドライン引数に、ユーザ名を付けてスクリプトを実行すると、そのユーザのSIDを表示するというコードです。
Dim UsrSetDim Usr
Dim Locator
Dim Service
Dim MesStr
Dim args
Dim query
'WMIサービスへの接続
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer
'コマンドライン引数取得
Set args = WScript.Arguments
'WMIクエリ生成(引数1番目にユーザ名が入っていることとする)
query = "Select * From Win32_UserAccount WHERE Name = '" _
& args(0) & "'"
'WMIクエリを実行
Set UsrSet = Service.ExecQuery( query )
'クエリから結果取得し文字列生成(Usr.SIDにSIDが入ってる)
For Each Usr In UsrSet
MesStr = MesStr + "名前:" + Usr.Name + vbTab + "SID:" _
+ Usr.SID + vbCrLf
Next
'出力
WScript.Echo MesStr
'MsgBox "登録されているユーザーアカウントは、" + _
'vbCrLf + vbCrLf + MesStr + vbCrLf + "ですよ。"
実行すると下記のようになります。
D:\>cscript sid.vbs hoge100
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
名前:hoge100 SID:S-1-5-21-xxxxxxxx-xxxxxxxx-xxxxxxxx-7292
参考: