- ベストアンサー
objectSIDについて
- 2003ActiveDirectory上のコンピュータアカウントをLDIFDEで吐き出すと(CSVDEでも良いのですが)、私のコンピュータのobjectSIDは「AQUAAAAAAAUVAAAAqv3j2rRJTZddJX69UQgAAA==」と表示されます。
- 実際に私のコンピュータでPsGetSidを実行すると、「S-1-5-21-1409082233-1202660629-839522115」と表示されます。
- 教えて頂きたいことは、以下の2点です。 1.objectSidをS-1-5の形式で表示するには、どうしたらいいのでしょう? 2.DC上でobjectSidのみを抜き出す(表示させる)方法をご教授ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
psgetsid は現行のSIDの桁数に対応していないようですね。 GUIで確認するのでしたら、Windows Server 2008 のADSI エディタで確認できますよ。 strDN を確認したいコンピュータ アカウントに変更してください。 --- Option Explicit Const adTypeBinary = 1 Const adTypeText = 2 Const strDN = "CN=DC1,OU=Domain Controllers,DC=example,DC=lan" ' Const strDN = "CN=Administrator,CN=Users,DC=example,DC=lan" Dim adObject, rawSID On Error Resume Next Set adObject = GetObject("LDAP://" & strDN ) If Err.Number <> 0 Then WScript.Echo strDN & " に接続できません" WScript.Quit End If On Error Goto 0 WScript.Echo GetStringSID( adObject ) Function GetStringSID( objAccount ) Dim retStr, rawSID, arrSID Dim adStream, i, tmp, j retStr = "S-" rawSID = objAccount.Get( "objectSid" ) Set adStream = WScript.CreateObject("ADODB.Stream") adStream.Type = adTypeText adStream.Charset = "UTF-16" adStream.Open adStream.WriteText rawSID adStream.Position = 0 adStream.Type = adTypeBinary adStream.Position = 2 ReDim arrSID(UBound(rawSID)) For i=0 to UBound(rawSID) tmp = adStream.Read(1) If IsNull(tmp) Then Exit For arrSID(i) = AscB(tmp) Next adStream.Close retStr = retStr & arrSID(0) & "-" & arrSID(1) j = 3 Do While UBound(arrSID) >= j * 4 - 1 tmp = arrSID(j*4-1) * 256^3 + arrSID(j*4-2) * 256^2 + arrSID(j*4-3) * 256 + arrSID(j*4-4) j = j + 1 retStr = retStr & "-" & tmp Loop GetStringSID = retStr End Function ---
その他の回答 (1)
- junkUser
- ベストアンサー率56% (218/384)
>S-1-5-21-3672374698-2538424756-3179160925 ここまではドメイン共通の部分なのでセキュリティ識別子としては不十分です。つまりSIDではありません。 #1 の冒頭にもすこし書きましたが、SIDの桁数が16進で8桁ぶん増えています。 したがって、PsGetSid ではドメインに使用しても正式なSIDが取得できないようです。
お礼
冒頭に桁数が・・・と仰っていたのはその事だったのですね。 すっきりしました。 大変、助かりました。 ご丁寧にご教授くださり感謝しております。 今後とも何卒宜しくお願い致します。
お礼
ありがとうございますm(_ _)m もう1つだけ質問させてください。 頂いたスクリプトをDC上で実行したところ、SIDが S-1-5-21-3672374698-2538424756-3179160925-2129と表示されました。 が、質問欄に記載したとおり、PsGetSidでは、 S-1-5-21-1409082233-1202660629-839522115と表示されます。 私のPCでレジストリを見てみると、PsGetSidで吐き出したSIDとは別にDC上で調査したSIDと(ほぼ)同じもの (S-1-5-21-3672374698-2538424756-3179160925)が存在していました。 これは、ドメイン参加時にDC側から割り振られたSIDという解釈で良いのでしょうか? 何卒宜しくお願い致します。