从Python脚本中请求UAC提升?我希望我的Python脚本在Vista上复制文件。当我从正常人那里运行时cmd.exe窗口中,不会生成错误,但文件不会被复制。如果我跑cmd.exe“作为管理员”,然后运行我的脚本,它工作得很好。这是有意义的,因为用户帐户控制(UAC)通常会阻止许多文件系统操作。有没有办法,从Python脚本中调用UAC提升请求(那些对话框中写着“这样的应用程序需要管理访问,这可以吗?”)如果这是不可能的,那么我的脚本是否至少可以检测到它没有被提升,这样它就可以优雅地失败?
3 回答

红糖糍粑
TA贡献1815条经验 获得超6个赞
import ctypes, sysdef is_admin(): try: return ctypes.windll.shell32.IsUserAnAdmin() except: return Falseif is_admin(): # Code of your program hereelse: # Re-run the program with admin rights ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)
py2exe
, cx_freeze
, pyinstaller
""
).
不需要外部库(Windows扩展也不需要Python)。它只使用 ctypes
从标准图书馆。 同时工作在Python 2和Python 3上。 不需要修改文件资源,也不需要创建清单文件。 如果不在if/etc语句下面添加代码,则代码将不会执行两次。 如果用户拒绝UAC提示,您可以很容易地将其修改为具有特殊行为。 您可以指定修改第四个参数的参数。 您可以指定修改第六个参数的显示方法。

吃鸡游戏
TA贡献1829条经验 获得超7个赞
编写一个清单文件,告诉Windows应用程序可能需要一些特权 在另一个程序中以提升的权限运行应用程序
添加回答
举报
0/150
提交
取消