ユーザにadministrator権限があるかどうか調べるには?

解決


しゅうじ  2004-01-20 00:09:22  No: 111398

Windows2000Pro VB6SP5  環境です。
ユーザにアドミニ権限があるかどうかを調べる方法をお願いします。


岡田 之仁  2004-01-21 13:49:51  No: 111399

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のパスワードを知っているなら、権限
    のあるなしを確認する必要はありませんので・・・
    偽装ログインしてやれば、何でもできてしまいます
    から・・・

以上。


しゅうじ  2004-01-22 21:54:09  No: 111400

どうもありがとうございます。ADSIって言葉は初めて聞きました。。。
API関数に「ユーザが所属しているグループを取得する」関数があったので、そっちを使って解決できました。自力で解決出来たらちゃんと報告するようにします。
前後してしまって。スイマセン、、、。
ちなみに、ローカルコンピュータかどうかを判定して、ローカルコンピュータであればAdmini権限があるかどうか判定するようにしています。

本当に助かります


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加