2011-11-14 3 views
3

난 당신이 윈도우 7사용자에게 관리자 권한이 있는지 여부를 확인하는 방법은 무엇입니까?

프로그램은 System32 폴더에 새 폴더를 만들 수있다의 로그인 화면의 배경을 변경하고도 파일을 이동할 수 있습니다 C#에서 프로그램을 만들었습니다. 개인용 컴퓨터에서이 문제가 발생하지 않지만 친구 시스템에서 테스트 한 결과 디렉토리 생성이 거부되었습니다.

그의 계정 유형은 관리자,하지만 내가 생각할 수있는 유일한 것은 그가 내 컴퓨터에서 사용할 수있는 권한이 일종의없는 것입니다. 사용자가이 권한을 확인할 수있는 방법이 있다면

그래서 궁금 해서요? 또는 주위를 둘러 보는 방법. 미리 감사드립니다!

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 

그때까지 WindowsPrincipan의 인스턴스를 생성 :이를 감지하기 위해

+0

http://stackoverflow.com/questions/1089046/in-net-c-test-if-user-is-an-administrative-user, HTTP : //stackoverflow.com/questions/3600322/check-if 가능한 중복의 – Burimi

+0

http://www.davidmoore.info/2011/06/20/how-to-check-if-the-current-user-is-an-administrator-even -THE - 현재 사용자가 관리자입니다 -if-uac-is-on / –

답변

3

이 같은 WindowsIdentity의 객체 얻을 수 같은

WindowsPrincipal principal = new WindowsPrincipal(identity); 

마지막에서 IsInRole를 사용하여 확인을() 메소드 이 :

string role = "BUILTIN\\Administrators"; 
bool IsAdmin = principal.IsInRole(role)); 

그런 다음 IsAdmin 변수를 사용하여 현재 사용자는 관리자이거나 그렇지 않습니다.

소스 - http://csharptuning.blogspot.com/2007/09/detecting-is-current-user-is.html

2

문제는 UAC입니다. 이는 고도가 필요한 작업입니다. 사용자가 administrators 그룹에 속해 있지만 프로세스에는 기본적으로 표준 사용자 토큰이 제공됩니다.

이 솔루션은 응용 프로그램이 UAC 상승 대화 상자를 호출 할 수 있도록 응용 프로그램의 매니페스트에 requireAdministrator 옵션을 추가하는 것입니다.

관련 문제