特定のユーザー (ドメイン アカウント) が現在のコンピューター (アプリケーションが実行されるコンピューター) のビルトイン Administrators グループのメンバーであるかどうかをプログラムで (.NET で) チェックする必要があります。
出来ますか?
.Net についてはわかりませんが、win32 では IsUserAnAdmin() を呼び出すのが簡単な方法です。さらに制御が必要な場合は、プロセス トークンを開いて、確認する必要がある各グループについて CheckTokenMembership で確認できます。
編集: .NET サンプル コードについては、 pinvoke.netを参照してください (ありがとう、choteen)
これには Win32 API があり、P/Invoke を実行できます: IsUserAnAdmin
この質問は、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
そうでない場合は、特定のユーザーにIDを設定できると期待していますが、その方法については調べていません。