2010-08-18 4 views
1

꽤 자주 언급 된 문제에 부딪 쳤습니다. 그러나 거의 모든 정보원을 조사한 후에도 나는 정보원을 얻지 못했습니다. 문제는 다음과 같습니다 :"Program Files"폴더에 대한 액세스가 필요합니다.

나는 응용 프로그램의 새 버전을 확인하기 위해 서버에 연결 한 작은 업데이터 도구를 작성한 다음 새 버전을 clientmashine에 복사합니다. 따라서 패턴은 다음과 같습니다 :

클라이언트는 특정 응용 프로그램과 함께 저에게 미리 구성된 업데이터를 설치합니다. 그래서 기본적으로 업데이터는 Program Files Folder 어딘가에 있습니다. 그런 다음 업데이터가 시작되고 우리 서버에 연결되어 최신 버전을 가져 와서 업데이터가 설치된 것과 동일한 디렉토리에 설치합니다. 따라서 클라이언트는 두 개의 응용 프로그램이 있다는 것을 모릅니다. 업데이트 프로그램과 업데이트 프로그램의 기본 응용 프로그램입니다. 당신이 그 아이디어를 얻길 바랍니다.

그래서 Program Files 폴더에 대한 액세스 권한이 필요합니다.

Windows 7에서 개발 중이며 소프트웨어는 7에서도 실행됩니다.

업데이트 프로그램이 관리자에 의해 실행되는지 확인하는 방법이 있습니까? 액세스 권한이 필요합니까? 내가 관리자 권한을 가지고 있어도 액세스를 거부하는 이유는 무엇입니까? 사용자가 갖고있는 권한을 코드로 확인하는 방법이 있습니까?

답변

4

나는 검사 및 두 개의 서로 다른 응용 프로그램에 업데이터를 분할 할 3,516,

  • UAC Team Blog

  • . 검사기는 일반 사용자로 실행할 수 있습니다. 업데이트가 있음을 감지하면 업데이터를 시작합니다. 업데이터는 a manifest that states that it needs admin rights입니다. 그러면 UAC가 사용 가능할 때 사용자에게 액세스를 허용하라는 메시지가 표시됩니다.

    +0

    이것은 내가 한 일입니다. 훌륭하게 작동합니다. 고마워. – GuyFawkes

    2
    0

    앱에서 app.manifest를 사용하십시오. requireadministrator를 true로 설정하십시오. 또는 복사하여 아래에 붙여 넣기하십시오.

    <?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="true" /> 
         </requestedPrivileges> 
        </security> 
        </trustInfo> 
    </asmv1:assembly> 
    

    위의 내용은 vb.net 응용 프로그램입니다.

    관련 문제