[VB.NET] グループに指定のユーザーが参加しているかを確認する方法

2014年1月6日

 指定のグループに指定のユーザーが参加しているをプログラムから知る方法。
 (指定ユーザーが所属しているグループの一覧を得るわけではない点に注意)

  1. 事前準備
    • .NET の参照設定で、System.DirectoryServices を追加する。
    • COM の参照設定で、"Active DS Type Library" を追加する。
  2. ドメインのユーザーが、ドメインのグループに参加しているかを確認する場合は、以下で確認できます。
    ' Domain User - Domain Group 
    Dim groupName = "WinNT://domain/group"
    Dim userName = "WinNT://domain/user"
    
    Dim dsEntry = New System.DirectoryServices.DirectoryEntry(groupName)
    Dim domainGroup = CType(dsEntry.NativeObject, ActiveDs.IADsGroup)
    
    MsgBox(domainGroup.IsMember(userName))
    
  3. ドメインのユーザーが、ローカルのグループに参加しているかを確認する場合は、グループ名とユーザーの指定の部分を以下のように変更します。

    Dim groupName = "WinNT://domain/" & System.Environment.MachineName & "/group"
    Dim userName = "WinNT://domain/user"
    
  4. ローカルのユーザーが、ローカルのグループに参加しているかを確認する場合は、グループ名とユーザーの指定の部分を以下のように変更します。
    Dim groupName = "WinNT://domain/" & System.Environment.MachineName & "/group"
    Dim userName = "WinNT://domain/" & System.Environment.MachineName & "/user"
    

     上記の domain にはドメイン名またはワークグループ名を指定します。
     user には ユーザー名、group にはグループ名を指定します。

     注意点は、ローカルユーザーやローカルグループであっても、そのマシンがドメインに参加していれば domain 部分には参加しているドメイン名を指定する必要があります。そのマシンがドメインに参加していない場合に、domain 部分にワークグループ名を指定します。


参考)
 http://handcraft.blogsite.org/Memo/Article/Archives/150

p.s.
 ADSI がリークするという話があり、上記とリンクするのかどうかは確認していません。メモとして記録しておきます。(http://blogs.technet.com/b/jpilmblg/archive/2010/05/14/adsi-winnt-adsopenobject.aspx)






カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org