2

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

出来ますか?

4

4 に答える 4

2

.Net についてはわかりませんが、win32 では IsUserAnAdmin() を呼び出すのが簡単な方法です。さらに制御が必要な場合は、プロセス トークンを開いて、確認する必要がある各グループについて CheckTokenMembership で確認できます。

編集: .NET サンプル コードについては、 pinvoke.netを参照してください (ありがとう、choteen)

于 2008-09-09T16:13:38.867 に答える
2

これには Win32 API があり、P/Invoke を実行できます: IsUserAnAdmin

この質問は、Vista ではより複雑です。このブログ投稿を参照してください。

于 2008-09-09T16:14:15.543 に答える
1

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

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);
}
于 2008-09-09T16:10:55.067 に答える
1

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

using System.Security.Principal;

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

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

そうでない場合は、特定のユーザーにIDを設定できると期待していますが、その方法については調べていません。

于 2008-11-21T20:41:30.003 に答える