2011-09-13 1 views
2

UAC 높은 권한이 필요한 프로세스에 대해 다른 응용 프로그램에서 호출 한 실행 파일을 만들었습니다. 아래 프로젝트를 빌드하면 UAC를 잘 요청합니다.이 프로젝트 출력을 설치 프로젝트에 추가하면 UAC없이 프로젝트가 생성됩니다.실행 파일이 배포 프로젝트의 일부일 때 상승 요청하지 않음

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="CreateApp" type="win32"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="requireAdministrator"/> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

왜 이런가요? 아니면 매니페스트가있는 설치 프로젝트의 일부로 사용할 수 있습니까?

답변

1

InstallExecuteSequence의 사용자 지정 작업은 이미 Windows Installer 서비스의 하위 프로세스로 실행됩니다. 그래서 그들은 자신의 특권을 상속받으며 매니페스트는 사용되지 않습니다.

모든 권한을 가진 사용자 지정 작업을 실행하려면 deferred with no impersonation으로 예약해야합니다.

EXE를 사용자 지정 동작으로 사용하지 않고 다른 프로세스에서 EXE를 시작하는 경우 ShellExecute을 사용해야합니다.