Vistaで管理者としてコンパイル済みのPython(py2exe)を実行する
-
10-07-2019 - |
質問
Vistaで管理者として(py2exeでコンパイルされた)コンパイル済みPythonをプログラムで実行することは可能ですか?
その他の説明:
VistaでWindowsホストファイル(c:\ Windows \ system32 \ drivers \ etc \ hosts)を変更するプログラムを作成しました。ユーザーに管理者権限がある場合に実行されるXPとは異なり、ユーザーは管理者権限を持っているため、プログラムで正しい権限に昇格させる方法が必要です。
解決
プログラムの実行時にWindowsに昇格のプロンプトを表示させたいということですか?これは、EXEのリソースにUACマニフェストを追加することで制御されます。 このブログエントリでは、マニフェストの作成方法と方法.RESファイルにコンパイルします。
カスタム.RESファイルを埋め込むためのpy2exeの機能がわからないため、プラットフォーム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)],
}]
)
ただし、いじる必要があるかもしれません。