2016-08-22 9 views
-2

유일한 정보가 사용자 이름 (및 도메인) 인 경우 사용자가 관리자 그룹의 구성원인지 어떻게 알 수 있습니까? 관련된)?사용자가 사용자 이름/도메인별로 관리자 그룹의 구성원인지 확인하는 방법

현재 사용자에 대해이 정보를 얻는 방법을 알고 있습니다. 그러나, 제 경우에는 아직 로그인하지 않은 사용자에 대해이 정보를 얻을 필요가 있습니다 (저는 Credential Provider에서 일하고 있습니다). 따라서 사용자 이름은 & 도메인 만 사용할 수 있습니다.

이 문제는 Windows 컴퓨터에만 관련이 있습니다.

저는 C#/C++로 작업하고 있습니다. 또한 IsUserAnAdmin() 윈도우 API의 알고 WindowsPrincipal

: 같이

나는 C# WindowsPrincipal 클래스의 알고 있습니다.

using System.Security.Principal; 
    public bool admin() 
{ 
WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); 
     return principal.IsInRole(WindowsBuiltInRole.Administrator); 
} 

에서 : 아직 C#에서

+0

당신은 cmd-line'net user/domain the_user_id'을 사용해 보셨습니까? 그것은 많은 것들을 반환합니다. –

+0

무엇에 대한 관리자 권한이 있습니까? 파일, 서버, 그들이있는 PC? 웹 사이트, 윈도우 응용 프로그램을 실행하고 있습니까, Windows 컴퓨터 또는 유닉스 컴퓨터에서 실행하고 있습니까? 귀하를 도울 수있는 충분한 정보가 전혀 없습니다. – BugFinder

+1

Windows는 보안 개체를 사용합니다. 파일이나 프로세스와 같이 객체에 액세스하기위한 요구 사항은 각 객체마다 개별적으로 설정됩니다. * "이 사용자는 모든 것에 액세스 할 수 있습니다"* 사용자 계정이 없으므로이를 나타내는 플래그가 적습니다. 솔루션 대신에 진짜 질문을 해보시겠습니까? – IInspectable

답변

0

봐 당신은 당신이 관리자를 찾을 수 있는지 여부를 확인하기 위해 반복적으로 사용자의 그룹 구성원을 열거해야합니다, 충분 s 그룹. 이것은 사소한 것이 아니지만 부당하게 어렵지 않습니다. 당신을 위해 그것을 할 내장 된 라이브러리가 없습니다.

첫 번째 캐치는 모든 관련 그룹을 읽으려면 Active Directory에 대한 충분한 액세스 권한이 있다고 가정합니다. 기본적으로 로컬 시스템 계정에서이 작업을 수행 할 수는 있지만 시스템 관리자가 그룹 구성원을 읽을 수 없도록 그룹의 보안 사용 권한을 변경하지 못하게해야합니다.

또한 보안 컨텍스트 Credential Providers가 어떤 보안 컨텍스트에서 실행되는지 잘 모르므로 사용자를 대신하여 도메인 구성원 자격을 열거하기 위해 별도의 서비스가 실행되어야 할 수도 있습니다.

두 번째 캐치는 Everyone, INTERACTIVE 등과 같은 특별한 보안 주체는 포함하지 않지만 이들을 무시할 수 있습니다. 관리자 그룹의 구성원이되는 것은 매우 드뭅니다. 필요하다고 생각하면 포함 시키거나 시스템 관리자가이를 금지 할 수 있습니다.

은 사용자의 암호를 알아낼 때까지 필요에 따라 다시 아키텍처를 변경하는 것이 좋습니다.

+0

감사합니다. 나는 당신의 조언을 따르고 사용자의 그룹 멤버쉽을 열거 할 수 있다고 생각합니다 ... – g1500

-2

(내 코드는 사용자가 실제로 Windows 시스템에 들어가기 전에 실행)에 로그인하지 않은 사용자를 처리하고 있습니다 때문에 , 나는이 방법을 사용할 수 없습니다 C++ : "거의 항상 옳다"만약이 https://msdn.microsoft.com/en-us/library/bb776463.aspx

+0

질문에서 인용하기 * 나는 현재 사용자를 위해이 정보를 얻는 방법을 알고 있습니다 * –

+0

나는 Credential Provider를 연구하고 있으므로 사용할 수 없습니다. 내 경우에는 현재 사용자가 없습니다. 사용자 이름 (해당되는 경우 + 도메인) – g1500