문제

Vista의 관리자로서 컴파일 된 Python (py2exe를 통해 comiled)을 프로그래밍 방식으로 실행할 수 있습니까?

좀 더 설명 :
Vista에서 Windows 호스트 파일 (C : Windows System32 Drivers Etc Hosts)을 수정하는 프로그램을 작성했습니다. 사용자는 사용자가 관리 권한이있는 경우 실행되는 XP와 달리 관리자 권한을 가지고 있으므로 프로그램 적으로 올바른 권한으로 올바른 권한을 높이는 방법이 필요합니다.

도움이 되었습니까?

해결책

프로그램이 실행될 때 Windows가 고도를 프롬프트하기를 원합니까? 이것은 EXE의 리소스에 UAC 매니페스트를 추가함으로써 제어됩니다. 이 블로그 항목 매니페스트를 만드는 방법과이를 .RES 파일로 컴파일하는 방법을 설명합니다.

PY2EXE가 Custom .RES 파일을 포함시키기 위해 어떤 시설을 가지고 있는지 모르겠으므로 플랫폼 SDK에서 MT.EXE 도구를 사용하여 프로그램에 매니페스트를 포함해야 할 수도 있습니다. mt.exe .res 파일이 필요하지 않습니다. .manifest 파일을 직접 병합 할 수 있습니다.

다른 팁

예제를 따릅니다 Python2x\Lib\site-packages\py2exe\samples\user_access_control 그냥 추가하십시오 uac_info="requireAdministrator" 콘솔 또는 Windows Dict :

windows = [{
    'script': "admin.py",
    'uac_info': "requireAdministrator",
},]

Roger Lipscombe의 의견에 따라, 나는 내가하고있는 일에 대한 실제 지식없이 py2exe의 매니페스트 파일을 사용했습니다. 그래서 이거 ~할 것 같다 일하다:

# in setup.py
# manifest copied from http://blogs.msdn.com/shawnfa/archive/2006/04/06/568563.aspx
manifest = '''
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
       <asmv3:trustInfo xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
         <asmv3:security>
           <asmv3:requestedPrivileges>
             <asmv3:requestedExecutionLevel
               level="asInvoker"
               uiAccess="false" />
           </asmv3:requestedPrivileges>
         </asmv3:security>
       </asmv3:trustInfo>
     </assembly>
'''

setup(name='MyApp',
      #...
      windows=[ { #...
                  'other_resources':[(24, 1, manifest)],
                 }]
     )

그래도 약간의 충격을 받아야 할 수도 있습니다 ..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top