请问 Python 中如何以管理员权限打开 PyQt 的 QLabel 外部连结(URL)?

发布于 2022-09-01 15:22:41 字数 1404 浏览 10 评论 0

当我用管理员权限打开外部连结(URL)时,会出现错误:

shellexecute failed (error 2)

我的程序需要管理员权限。

先谢谢任何帮助我的朋友。

测试代码:

from PyQt5.QtWidgets import * 
from PyQt5.QtCore import * 
from win32com.shell import shell 
import win32con, win32event, win32process 
from win32com.shell import shellcon 
import sys, ctypes 

class Win(QWidget): 
    def __init__(self): 
        super().__init__() 
        self.resize(100, 100) 
        version = QLabel('''<a style= "color:#55aaff; text-decoration:none; font-size:11pt; font-family:Consolas; font-weight: bold;" \ 
        href="http://www.google.com">Open Url</a>''', self) 
        version.setOpenExternalLinks(True) 

def runAsAdmin(wait=True): 

    cmd = sys.executable 
    params = " ".join(['"{}"'.format(x) for x in sys.argv]) 

    procInfo = shell.ShellExecuteEx(nShow = win32con.SW_SHOWNORMAL, 
    fMask = shellcon.SEE_MASK_NOCLOSEPROCESS, 
    lpVerb = 'runas', 
    lpFile = cmd, 
    lpParameters = params) 

    if wait: 
        procHandle = procInfo['hProcess'] 
        obj = win32event.WaitForSingleObject(procHandle, win32event.INFINITE) 
        rc = win32process.GetExitCodeProcess(procHandle) 

if not ctypes.windll.shell32.IsUserAnAdmin(): 
    runAsAdmin() 

else: 
    app = QApplication(sys.argv) 
    win = Win() 
    win.show() 
    sys.exit(app.exec_())

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何必那么矫情 2022-09-08 15:22:41

我运行了这个代码 没有错误.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文