Windows2000Pro VB6SP5 環境です。
ユーザにアドミニ権限があるかどうかを調べる方法をお願いします。
ADSIを利用して、取得できます。
権限があるかどうかは、ユーザーがそのグループに属するか
どうかを判定することになります。
この場合、Administrators グループに属するか否か・・・
' 参照設定:Windows Host Object Model
Dim WshNetwork As WshNetwork
' 参照設定:Active DS Type Library
Dim Group As IADsGroup
Dim User As IADsUser
Dim ComputerName As String
Dim GroupName As String
Dim UserName As String
Dim bRet As Boolean
'コンピュータ名の取得
Set WshNetwork = CreateObject("WScript.Network")
ComputerName = WshNetwork.ComputerName
Set WshNetwork = Nothing
' 探したいユーザが属するグループ
GroupName = "Administrators"
' 探すユーザー
UserName = "Guest"
Set User = GetObject("WinNT://" & ComputerName & "/" & UserName & ",user")
Set Group = GetObject("WinNT://" & ComputerName & "/" & GroupName & ",group")
bRet = Group.IsMember(User.ADsPath)
Set Group = Nothing
Set User = Nothing
If bRet Then
Debug.Print "Is Member !!"
Else
Debug.Print "IsNot Member !!"
End If
※ これはあくまで、ローカルコンピュータ上の話です。
ネットワーク上にドメインサーバーが存在し、その
ドメインに問い合わせる場合は、セキュリティーの
関係上、Administratorのパスワードが必要になりま
す。ユーザーにAdmin権限が無い場合、Administrator
のパスワードを知らないと問い合わせができない。
鶏が先か、卵が先か・・・
Administratorのパスワードを知っているなら、権限
のあるなしを確認する必要はありませんので・・・
偽装ログインしてやれば、何でもできてしまいます
から・・・
以上。
どうもありがとうございます。ADSIって言葉は初めて聞きました。。。
API関数に「ユーザが所属しているグループを取得する」関数があったので、そっちを使って解決できました。自力で解決出来たらちゃんと報告するようにします。
前後してしまって。スイマセン、、、。
ちなみに、ローカルコンピュータかどうかを判定して、ローカルコンピュータであればAdmini権限があるかどうか判定するようにしています。
本当に助かります
ツイート | ![]() |