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

在Vista中以管理员身份运行编译的python(py2exe),python,windows-vista,permissions,py2exe,Python,Windows Vista,Permissions,Py2exe,是否可以在Vista中以管理员身份以编程方式运行编译好的Python(通过py2exe编译) 更多说明: 我在Vista中编写了一个修改windows主机文件(c:\windows\system32\drivers\etc\hosts)的程序。该程序将不会运行,并且会异常失败,除非您右键单击并以管理员身份运行,即使用户具有管理员权限,也不例外,而在XP中,如果用户具有管理权限,该程序将运行,因此,我需要一种方法以编程方式将其提升到正确的权限。您的意思是希望Windows在程序运行时提示提升吗?这

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

更多说明:

我在Vista中编写了一个修改windows主机文件(c:\windows\system32\drivers\etc\hosts)的程序。该程序将不会运行,并且会异常失败,除非您右键单击并以管理员身份运行,即使用户具有管理员权限,也不例外,而在XP中,如果用户具有管理权限,该程序将运行,因此,我需要一种方法以编程方式将其提升到正确的权限。

您的意思是希望Windows在程序运行时提示提升吗?这是通过向EXE的资源添加UAC清单来控制的。解释如何创建清单以及如何将其编译为.RES文件


我不知道py2exe在嵌入自定义.RES文件方面有什么功能,因此您可能需要使用Platform SDK中的MT.EXE工具将清单嵌入到您的程序中。MT.EXE不需要.RES文件;它可以直接合并.manifest文件。

继Roger Lipscombe的评论之后,我在py2exe中使用了一个manifest文件,但对我所做的事情一无所知。因此,这可能会起作用:

setup.py中的
#
#从复制的清单http://blogs.msdn.com/shawnfa/archive/2006/04/06/568563.aspx
清单=“”
'''
安装程序(name='MyApp',
#...
windows=[{#。。。
“其他资源”:[(24,1,清单)],
}]
)

您可能需要做一些修改。

以下是
Python2x\Lib\site packages\py2exe\samples\user\u access\u control
中的示例,只需将
uac\u info=“requireAdministrator”
添加到控制台或windows dict即可:

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

pyinstaller的最佳解决方案如下:


对exe清单文件的任何操作都不起作用。使用if-else语句从python代码中处理uac

真糟糕,这很管用!非常感谢艾维洛,这正是我的节目所需要的。太简单了。有人知道在Mac OS X中,py2app是否有类似的功能来提示用户权限吗?这需要是谷歌搜索py2exe+UAC的最高级别。完美答案。
windows = [{
    'script': "admin.py",
    'uac_info': "requireAdministrator",
},]