none
응용 프로그램에서 장치 드라이버 Enable/Disable 시키는 방법 (관리자 권한 없이) RRS feed

  • 질문

  • 저희가 지금 개발하고 있는 모듈은 응용프로그램, 그리고 같이 연동되는 가상 Winodows 드라이버로 구성되어 있습니다.

    가상 드라이버는 WUDF 프레임 워크를 이용해서 구현한 상태이고 응용프로그램은 Windows 용 응용프로그램입니다. 내부 코어 코드는 C++로 작성되어 있습니다.

    WUDF 장치를 devcon.exe 를 이용해서 enable/disable 시킬 수 있는 것은 알고 있고 관련 샘플 코드를 보고 driver 관련 api를 사용해서 devcon과 유사하게 저희 드라이버를 Enable/Disable 시키는 모듈을 개발했습니다.

    문제는 관리자 권한이 있을 경우 (또는 사용자 계정 컨트롤(UAC)이 꺼져 있을 경우) 에만 동작한다는 것입니다.

    해당 드라이버는 저희가 개발 한 것인데 이 드라이버에만 한하여 관리자 권한 없이 사용자의 프로그램이 Enable Disable 시키는 시나리오를 구현하고 싶은데 방법이 있는지 경험자 분들의 조언 부탁드립니다.

    2015년 1월 27일 화요일 오전 2:25

답변

  • UAC 하에서는 어쩔 수 없이 관리자 권한을 획득해야 합니다.

    이런 경우, 해결책은 2가지 정도가 있습니다.

    1. 응용 프로그램 EXE의 manifest에 requireAdministrator를 설정하거나, 코드에서 UAC 창을 띄워 관리자 권한 획득, 이에 대한 자세한 방법은 다음의 글을 참고하세요.

    신뢰도 등급을 조절하는 방법(1) - Manifest 파일 이용
    ; http://www.sysnet.pe.kr/2/0/445

    신뢰도 등급을 조절하는 방법(2) - 직접 코딩
    ; http://www.sysnet.pe.kr/2/0/446

    2. NT 서비스를 설치해 관리자 권한이 필요한 작업을 대행하거나, 프로그램 설치 단계에서 관리자 권한을 필요로 하는 작업 설정.

    위의 2가지 정도가 아니고서는 UAC 하에서 driver를 enable/disable 하는 것은 불가능합니다. (그게 가능하면 보안 결함입니다.)

    • 답변으로 표시됨 ipconv 2015년 1월 27일 화요일 오전 5:12
    2015년 1월 27일 화요일 오전 3:57

모든 응답

  • UAC 하에서는 어쩔 수 없이 관리자 권한을 획득해야 합니다.

    이런 경우, 해결책은 2가지 정도가 있습니다.

    1. 응용 프로그램 EXE의 manifest에 requireAdministrator를 설정하거나, 코드에서 UAC 창을 띄워 관리자 권한 획득, 이에 대한 자세한 방법은 다음의 글을 참고하세요.

    신뢰도 등급을 조절하는 방법(1) - Manifest 파일 이용
    ; http://www.sysnet.pe.kr/2/0/445

    신뢰도 등급을 조절하는 방법(2) - 직접 코딩
    ; http://www.sysnet.pe.kr/2/0/446

    2. NT 서비스를 설치해 관리자 권한이 필요한 작업을 대행하거나, 프로그램 설치 단계에서 관리자 권한을 필요로 하는 작업 설정.

    위의 2가지 정도가 아니고서는 UAC 하에서 driver를 enable/disable 하는 것은 불가능합니다. (그게 가능하면 보안 결함입니다.)

    • 답변으로 표시됨 ipconv 2015년 1월 27일 화요일 오전 5:12
    2015년 1월 27일 화요일 오전 3:57
  • 역시 관리자 권한이 반드시 필요한 시나리오 인 것 같네요.

    답변 감사드립니다.

    2015년 1월 27일 화요일 오전 5:12