주어진 사용자 (도메인 계정)가 현재 컴퓨터 (응용 프로그램이 실행되는 컴퓨터)의 기본 제공 Administrators 그룹의 구성원인지 여부를 프로그래밍 방식 (.NET에서)으로 확인해야합니다.주어진 사용자가 기본 제공 Administrators 그룹의 구성원인지 확인하는 방법은 무엇입니까?
가능합니까?
주어진 사용자 (도메인 계정)가 현재 컴퓨터 (응용 프로그램이 실행되는 컴퓨터)의 기본 제공 Administrators 그룹의 구성원인지 여부를 프로그래밍 방식 (.NET에서)으로 확인해야합니다.주어진 사용자가 기본 제공 Administrators 그룹의 구성원인지 확인하는 방법은 무엇입니까?
가능합니까?
내가 닷넷에 대해 잘 모르지만,는 Win32에서, 쉬운 방법은() IsUserAnAdmin를 호출하는 것입니다. 당신이 더 많은 제어가 필요한 경우 토큰 과정을 열고
편집을 확인해야하는 각 그룹에 대한 CheckTokenMembership을 확인 할 수 있습니다
당신은 내가이 답변에서 한 그룹처럼 루프 수 :
Determining members of local groups via 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);
}
이는 Win32있다 .NET 샘플 코드에 대한 pinvoke.net (감사 chopeen)를 참조하십시오 이 API는 P/Invoke 할 수 있습니다 : IsUserAnAdmin
질문은 Vista에서 더 복잡합니다 ... blog post을 참조하십시오. 하지 다음 경우 다음 현재 실행중인 사용자에 대한
using System.Security.Principal;
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal wp = new WindowsPrincipal(identity);
if (wp.IsInRole("BUILTIN\Administrators"))
// Is Administrator
else
// Is Not
을 이야기하는 경우
"IsUserAnAdmin 함수는 CheckTokenMembership의 래퍼이므로 IsUserAnAdmin을 호출하는 대신 관리자 그룹의 상태를 직접 확인하여 해당 함수를 직접 호출하는 것이 좋습니다. (링크 된 페이지에서) – Espo
나는 전에주의를 알지 못했다. 마이크로 소프트가 왜 그런 간단한 도우미를 비추천으로 여기는 것을 고려해야하는지 궁금하다. 다행스럽게도 그들은 하위 호환성을위한 좋은 기록을 갖고있다. –
나는 특정 사용자에게 정체성을 설정하기 위해 수를 예상하지만 어떻게 들여다 없습니다.
System.DirectoryServices.AccountManagement 네임 스페이스는 .NET 3.5에 새로 추가 되었습니까? 아닙니다. –
링크 된 기사의 첫 번째 문장 : "새로운 3.5 항목을 살펴보면"System.DirectoryServices.AccountManagement "라는 새 어셈블리를 발견 한 것이 내 관심을 끌었습니다." – Espo
죄송합니다. 나는 그것을 놓쳤습니다. CheckTokenMembership 정보를 답안에 추가하여 정보를 완성 할 수 있습니까? (답변을 수락 할 수 있도록 표시 할 수 있습니까?) –