다음을 통해 공유


관리자 권한으로 실행

애플리케이션에서 실행해야 하는 계정 유형을 설정하는 첫 번째 단계는 애플리케이션에서 사용할 리소스와 애플리케이션이 호출할 권한 있는 API를 검사하는 것입니다. 애플리케이션 또는 애플리케이션의 상당 부분이 관리자 권한이 필요하지 않다는 것을 확인할 수 있습니다. 보안 코드작성, 마이클 하워드와 데이비드 르블랑에 의해이 평가를 수행하는 방법에 대한 훌륭한 설명을 제공하고 매우 권장됩니다. (일부 언어 및 국가에서는 이 리소스를 사용할 수 없습니다.)

다음 방법 중 하나를 사용하여 애플리케이션에 필요한 권한을 악의적인 공격에 덜 노출하여 제공할 수 있습니다.

  • 권한이 적은 계정으로 실행합니다. 이 작업을 수행하는 한 가지 방법은 PrivilegeCheck 사용하여 토큰에서 사용하도록 설정된 권한을 확인하는 것입니다. 사용 가능한 권한이 현재 작업에 적합하지 않은 경우 해당 코드를 사용하지 않도록 설정하고 관리자 권한이 있는 계정에 로그온하도록 사용자에게 요청할 수 있습니다.
  • 관리자 권한이 필요한 별도의 애플리케이션 함수에 침입합니다. 사용자에게 RunAs 명령을 실행하는 바로 가기를 제공할 수 있습니다. 바로 가기를 설정하는 방법에 대한 자세한 지침은 도움말에서 "runas"를 검색합니다. 프로그래밍 방식으로 애플리케이션에 대한 AppId Key 레지스트리 키에서 RunAs 명령을 구성할 수 있습니다.
  • CredUIPromptForCredentials(GUI) 또는 CredUICmdLinePromptForCredentials(명령줄)를 호출하여 사용자를 인증하여 사용자 이름과 암호를 가져옵니다. 예를 들어 사용자에게 자격 증명 요청 참조하세요.
  • 사용자를 가장합니다. System과 같은 권한이 높은 계정에서 시작하는 프로세스는 ImpersonateLoggedOnUser 또는 유사한 Impersonate 함수를 호출하여 사용자 계정을 가장하여 권한 수준을 줄일 수 있습니다. 그러나 RevertToSelf 대한 호출이 스레드에 삽입되면 프로세스는 원래 시스템 권한으로 돌아갑니다.

애플리케이션이 관리자 권한이 있는 계정으로 실행되어야 하고 관리자 암호를 소프트웨어 시스템에 저장해야 한다고 결정한 경우 안전하게 이 작업을 수행하는 방법은 암호 처리 참조하세요.