特定のユーザーが組み込みの管理者グループのメンバーであるかどうかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/52256

  •  09-06-2019
  •  | 
  •  

質問

特定のユーザー (ドメイン アカウント) が現在のコンピューター (アプリケーションが実行されるコンピューター) の組み込みの Administrators グループのメンバーであるかどうかを (.NET で) プログラム的に確認する必要があります。

出来ますか?

役に立ちましたか?

解決

.Net については知りませんが、win32 では、IsUserAnAdmin() を呼び出すのが簡単な方法です。より詳細な制御が必要な場合は、プロセス トークンを開いて、確認する必要があるグループごとに CheckTokenMembership を使用して確認できます。

編集: 見る ピンボークネット .NET サンプルコード用 (Chopeen に感謝)

他のヒント

これを P/Invoke できる Win32 API があります。 ユーザーは管理者です

Vista では問題はさらに複雑になります...これを見てください ブログ投稿.

この回答で行ったように、グループをループすることができます。

C# を使用してローカル グループのメンバーを決定する

もう少し読んだ後、最も簡単なのは、 System.DirectoryServices.AccountManagement 名前空間。使用方法は次のとおりです。

http://www.leastprivilege.com/SystemDirectoryServicesAccountManagement.aspx

サンプル:

public static bool IsUserInGroup(string username, string groupname, ContextType type)
{
    PrincipalContext context = new PrincipalContext(type);

    UserPrincipal user = UserPrincipal.FindByIdentity(
        context,
        IdentityType.SamAccountName,
        username);
    GroupPrincipal group = GroupPrincipal.FindByIdentity(
        context, groupname);

    return user.IsMemberOf(group);
}

現在実行中のユーザーについて話している場合は、

using System.Security.Principal;

WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal wp = new WindowsPrincipal(identity);

if (wp.IsInRole("BUILTIN\Administrators"))
   // Is Administrator
else
   // Is Not

そうでない場合は、設定できることを期待しています 身元 特定のユーザーに通知しましたが、その方法は検討されていませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top