相关文章推荐
焦虑的针织衫  ·  Win10 ...·  1 年前    · 
慷慨大方的显示器  ·  Canvas 类 ...·  2 年前    · 

在Vista中以管理员身份运行已编译的Python(py2exe)。

8 人关注

是否可以在Vista中以管理员身份编程运行已编译的Python(通过py2exe编译)?

再做一些澄清。
我写了一个修改windows hosts文件(c:\Windows\system32\drivers\etc\hosts)的程序,在Vista中,除非你右键单击并以管理员身份运行,否则程序将无法运行,即使用户有管理员权限,也会出现异常,而在XP中,如果用户有管理权限,它就会运行,所以我需要一种方法,以程序方式将其提升到正确权限。

python
windows-vista
permissions
py2exe
UnkwnTech
UnkwnTech
发布于 2008-10-12
4 个回答
Ivaylo
Ivaylo
发布于 2020-06-16
已采纳
0 人赞同

按照 Python2x\Lib\site-packages\py2exe\samples\user_access_control 中的例子,只需在控制台或windows dict中添加 uac_info="requireAdministrator"

windows = [{
    'script': "admin.py",
    'uac_info': "requireAdministrator",
    
我的天哪,这真管用!我的天哪。 非常感谢lvaylo,这正是我的程序所需要的。 也很简单。
有谁知道在Mac OS X中是否有与py2app相当的提示权限的方法?
这需要成为谷歌搜索py2exe+UAC的最高排名。完美的答案。
Roger Lipscombe
Roger Lipscombe
发布于 2020-06-16
0 人赞同

你的意思是,你想让Windows在你的程序运行时提示你的权限吗?这可以通过在EXE的资源中添加一个UAC清单来控制。 This blog entry 解释了如何创建清单以及如何将其编译成.RES文件。

我不知道py2exe有什么设施可以嵌入自定义的.RES文件,所以你可能需要使用Platform SDK中的MT.EXE工具来将清单嵌入你的程序中。MT.EXE不需要.RES文件;它可以直接合并.manifest文件。

John Fouhy
John Fouhy
发布于 2020-06-16
0 人赞同

跟随Roger Lipscombe的评论,我在没有真正了解自己在做什么的情况下在py2exe中使用了一个清单文件。 所以这 might work:

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