8

コンパイルされたPython(py2exeを介してコンパイルされた)をVistaの管理者としてプログラムで実行することは可能ですか?

さらに明確
にするために、VistaでWindowsホストファイル(c:\ Windows \ system32 \ drivers \ etc \ hosts)を変更するプログラムを作成しました。プログラムは実行されず、右クリックして次のように実行しない限り、例外が発生して失敗します。ユーザーが管理者権限を持っている場合でも管理者。ユーザーが管理者権限を持っている場合に実行されるXPとは異なり、プログラムで正しい権限に昇格する方法が必要です。

4

4 に答える 4

38

コンソールまたは Windows dictPython2x\Lib\site-packages\py2exe\samples\user_access_controlに追加するだけの例に従います。uac_info="requireAdministrator"

windows = [{
    'script': "admin.py",
    'uac_info': "requireAdministrator",
},]
于 2009-09-18T16:15:43.213 に答える
5

プログラムの実行時にWindowsに昇格のプロンプトを表示させたいということですか?これは、EXEのリソースにUACマニフェストを追加することによって制御されます。このブログエントリでは、マニフェストを作成する方法と、マニフェストを.RESファイルにコンパイルする方法について説明します。

py2exeがカスタム.RESファイルを埋め込むためにどのような機能を備えているかわからないため、Platform SDKのMT.EXEツールを使用して、マニフェストをプログラムに埋め込む必要がある場合があります。MT.EXEは.RESファイルを必要としません。.manifestファイルを直接マージできます。

于 2008-10-12T08:55:22.693 に答える
3

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)],
                 }]
     )

ただし、いじる必要があるかもしれません..

于 2008-10-12T22:17:44.150 に答える