2011-10-08 3 views
7

Windows 7은 자동 메커니즘을 사용하여 응용 프로그램에 관리자 권한 상승이 필요한지 여부를 감지합니다. 또는 응용 프로그램 자체에 매니페스트가 있습니다.응용 프로그램에 관리자 권한이 필요한지 확인하십시오.

지정된 응용 프로그램에 관리자 권한 상승이 필요한지 여부를 프로그래밍 방식으로 확인할 수있는 방법이 있습니까? 나는 그것을 발견하기 위해 그것을 시작하고 싶지 않다.

감사합니다.

+1

"Pleas는 제목 앞에"C# "을 붙이지 않습니다. [so]에서 ​​우리는 태그를 사용합니다. –

+2

알겠습니다. 고맙습니다. 고맙습니다. 나는 더 이상의 질문에 염두에 두겠다.) – mmiccc

답변

4

Windows에 프로그램을 올리거나 매니페스트 파일을 통해 전달해야한다는 사실을 알리는 한 가지 방법이 있습니다. 매니페스트 파일은 어셈블리 (exe/dll)에 포함되거나 <YOUR_APP>.exe.manifest이라는 별도의 파일로 살 수 있습니다. 이것이 정말로 유일한 방법이고 아마도 당신이 안전하게 확인할 수있는 유일한 방법 일 것입니다. 공무상.

Windows에는 응용 프로그램 호환성에 사용되는 거대한 데이터베이스가 포함되어 있습니다. Microsoft가 응용 프로그램을 테스트하고 OS 업그레이드가 발생했을 때 응용 프로그램이 중단되면 데이터베이스에 항목을 생성하여 본질적으로 응용 프로그램을 해킹 할 수 있습니다. 때로는 현재 운영 체제 버전에 대해 거짓말을하거나 때로는 관리자 권한으로 자동 실행되거나 때로는 다른 작업을 수행하기도합니다. Application Compatibility Toolkit을 사용하여 데이터베이스를 볼 수 있습니다. 코드를 통해 데이터베이스를 쿼리하는 공식적인 방법이 있는지 나는 모른다. This blog post은 블로거가 만들었지 만 분명히 공개하지 않는 도구에 대해 말합니다.

마지막 자동 고도 메커니즘은 해당 앱이 설치 프로그램인지 확인하려고하는 알고리즘입니다. According to MSDN 이러한 속성은 체크 : 공급 업체, 회사 이름, 제품 이름 :

  • 파일 이름이 같은 키워드 "설치", "등의 설정", "업데이트"다음 버전 자원 분야에서
  • 키워드를 포함 , 파일 설명, 원본 파일 이름, 내부 이름 및 내보내기 이름.
  • 실행 파일에 포함 된 side-by-side manifest의 키워드.
  • 실행 파일에 링크 된 특정 StringTable 항목의 키워드.
  • 실행 파일에 링크 된 RC 데이터의 주요 속성.
  • 실행 파일 내의 대상 시퀀스입니다.

키워드 및 바이트 시퀀스는 다양한 설치 프로그램 기술에서 관찰 된 공통적 인 특성에서 파생되었습니다.

마지막으로 앱은 일반 사용자로 실행될 수 있지만 spawn a child process that requires elevated privileges입니다. 실제로 앱 자체를 디 컴파일하는 것의 부족을 실제로 감지 할 수있는 방법이 있는지 모르겠습니다.

+0

길고도 자세한 대답에 대해 먼저 감사하고 싶다! 좋아요, 마지막으로 설명한 알고리즘을 구현하고 매니페스트 파일을 찾아 보겠습니다. 그것은 많은 상황을 커버하는 것 같다. 대단히 감사합니다. :) – mmiccc

관련 문제