特定のユーザーが組み込みの管理者グループのメンバーであるかどうかを確認するにはどうすればよいですか?
質問
特定のユーザー (ドメイン アカウント) が現在のコンピューター (アプリケーションが実行されるコンピューター) の組み込みの Administrators グループのメンバーであるかどうかを (.NET で) プログラム的に確認する必要があります。
出来ますか?
解決
.Net については知りませんが、win32 では、IsUserAnAdmin() を呼び出すのが簡単な方法です。より詳細な制御が必要な場合は、プロセス トークンを開いて、確認する必要があるグループごとに CheckTokenMembership を使用して確認できます。
編集: 見る ピンボークネット .NET サンプルコード用 (Chopeen に感謝)
他のヒント
これを P/Invoke できる Win32 API があります。 ユーザーは管理者です
Vista では問題はさらに複雑になります...これを見てください ブログ投稿.
この回答で行ったように、グループをループすることができます。
もう少し読んだ後、最も簡単なのは、 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
そうでない場合は、設定できることを期待しています 身元 特定のユーザーに通知しましたが、その方法は検討されていませんでした。
所属していません StackOverflow