4

ユーザー名を取り込んで、そのユーザーがローカル管理者(ドメイン全体ではなく、ローカルマシンのみ)の場合はtrueを返し、それ以外の場合はfalseを返すメソッドを作成しようとしています。プロセスに管理者権限があるかどうかをIn.NET/ C#テストで見つけた手法を変更しようとしましたが、変更されませんでした。NetUserGetInfoの方法を使用してみましたが、機能させることができませんでした。今、私はUserPrincipalを使おうとしています。以下のコードは私が持っているすべてです...主に基本が機能し、それらが機能することをテストするだけです。

PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userId);

if(usr == null)
{
    Console.WriteLine("usr is null");
}
else
{
    Console.WriteLine(usr.Enabled);
    Console.WriteLine(usr.IsAccountLockedOut());

    foreach (Principal p in usr.GetAuthorizationGroups())
    {
        Console.WriteLine(p.ToString());   
    }
}

isMemberOfメソッドを使用できるはずですが、ローカル管理者用のグループを作成するにはどうすればよいですか?または、isMemberOfメソッドよりも優れた方法はありますか?

4

3 に答える 3

5

実際には、GetAuthorizationGroups()) から返されたプリンシパルの 1 つが「管理者」と等しいかどうかを確認できます。

foreach (Principal p in usr.GetAuthorizationGroups())
{
    if (p.ToString() == "Administrators")
    {
        result = true;
    }
}
于 2012-07-02T15:42:08.930 に答える