2010-06-04 2 views
1

내 설치 관리자는 설치된 Windows 서비스에서 일부 기본 구성을 수행하는 데 사용되는 구성 exe를 배포합니다. exe는 또한 일부 레지스트리 키를 작성하고 작성해야합니다. Windows 서버 2008 환경에서는이 키를 작성할 수 없습니다. 조사한 결과 관리자 권한이 있다는 것을 알았습니다. exe는 2008 년에 UAC에 필요한 관리자 권한을 요구하지 않습니다.이 문제를 해결하려면 exe를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행해야합니다. 그러나 이는 고객에게 실적을 알리는 데 필요한 추가 단계로서 이상적이지 않습니다. exe를 실행할 때 관리자 권한을 상승시키는 다른 방법이 있습니까?Windows Server 2008의 UAC로 인해 두통이 생깁니다!

답변

1

exe에 매니페스트를 넣거나 함께 실행하십시오. 사용중인 버전을 알려 주시면 Visual Studio를 사용하여 매니페스트를 퍼가는 방법을 알려 드리겠습니다. Visual Studio를 사용하지 않거나 EXE를 빌드하지 않은 경우 매니페스트 파일을 EXE와 같은 폴더에 넣으면됩니다. 이 경우 파일의 이름은 foo.exe의 경우 foo.exe.manifest와 같이 끝에 .manifest와 함께 exe와 동일하게 지정해야합니다. 내용은 다음과 같아야합니다

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <!-- UAC Manifest Options 
      If you want to change the Windows User Account Control level replace the 
      requestedExecutionLevel node with one of the following. 

     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

      If you want to utilize File and Registry Virtualization for backward 
      compatibility then delete the requestedExecutionLevel node. 
     --> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</asmv1:assembly> 

공지 사항 requestedExecutionLevel에 사용할 수있는 값은 코멘트에 모두 여기에 있습니다,이 하나가 requireAdministrator를 사용합니다. 이제는 항상 상승하고 따라서 당신을 위해 일할 것입니다.

+0

감사합니다. 케이트. 나는 이것을 시도했지만 그 순간에도 여전히 같은 문제가 발생했다. exe 내에서 매니페스트를 임베드하는 방법을 제안 해 주시겠습니까? 저는 Visual Studio 2008을 사용하고 있습니다. (외장 매니페스트 파일의 설정을 외형으로 파악하지 않음) assemblyIdentity 이름과 버전 속성의 이름을 적절히 변경했습니다. 또한 fyi) – user48408

+0

exe는 foo.config라고하지 않습니다. 어느 쪽이든 확장 기능을 표시하지 않으므로 foo.config.exe이거나 exe가 config 파일을 읽고 exe의 이름을 찾아야합니다. Visual Studio 2008에서 C#의 경우 : 프로젝트에 응용 프로그램 매니페스트를 추가합니다. 편집하여 requireAdministrator를 요청하십시오 (주석에서 복사 할 수 있습니다.) 그런 다음 프로젝트를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. 애플리케이션 탭에서 Manifest를 드롭 다운하고 app.manifest를 선택한다. 짓다. VB의 경우 프로젝트 속성의 응용 프로그램 탭으로 이동하여 UAC 설정을 클릭하고 매니페스트를 변경 한 다음 빌드하십시오. –

+0

그리고이 요소에서 :' '이름에 무엇을 넣을 지는 중요하지 않습니다. 대개 UAC를 변경하지만 UAC에는 아무런 영향을 미치지 않습니다. –

관련 문제