dポイントプレゼントキャンペーン実施中!

2003ActiveDirectory上のコンピュータアカウントをLDIFDEで吐き出すと(CSVDEでも良いのですが)、
私のコンピュータのobjectSIDは「AQUAAAAAAAUVAAAAqv3j2rRJTZddJX69UQgAAA==」と表示されます。

実際に私のコンピュータでPsGetSidを実行すると、「S-1-5-21-1409082233-1202660629-839522115」と表示されます。

教えて頂きたいことは、以下の2点です。
1.objectSidをS-1-5の形式で表示するには、どうしたらいいのでしょう?
2.DC上でobjectSidのみを抜き出す(表示させる)方法をご教授ください。

何卒宜しくお願い致します。

A 回答 (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
---
    • good
    • 0
この回答へのお礼

ありがとうございます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という解釈で良いのでしょうか?

何卒宜しくお願い致します。

お礼日時:2008/06/25 13:44

>S-1-5-21-3672374698-2538424756-3179160925


ここまではドメイン共通の部分なのでセキュリティ識別子としては不十分です。つまりSIDではありません。

#1 の冒頭にもすこし書きましたが、SIDの桁数が16進で8桁ぶん増えています。
したがって、PsGetSid ではドメインに使用しても正式なSIDが取得できないようです。

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/307si …
    • good
    • 0
この回答へのお礼

冒頭に桁数が・・・と仰っていたのはその事だったのですね。
すっきりしました。

大変、助かりました。
ご丁寧にご教授くださり感謝しております。
今後とも何卒宜しくお願い致します。

お礼日時:2008/06/27 11:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!