首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ctypes.winll.shell32.ShellExecuteW从Python脚本中请求UAC提升

使用ctypes.winll.shell32.ShellExecuteW从Python脚本中请求UAC提升
EN

Stack Overflow用户
提问于 2018-02-22 08:22:17
回答 1查看 1.6K关注 0票数 4

myClass在“./output”文件夹中生成一个XLSX文件。myClass中的以下代码行需要管理员权限:

代码语言:javascript
运行
复制
excel = win32com.client.Dispatch('Excel.Application')

我遵循了Request UAC elevation from within a Python script?中的答案,现在我有了以下脚本:

代码语言:javascript
运行
复制
import ctypes, sys
from my_module import myClass

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    myClass
else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, "", None, 1)

但是,这似乎会提升并退出,就好像我在UAC提示中选择了No一样。

如果我在Administrator cmd,>python uac_test.py中运行上面的代码块,不知何故,它会生成两个相同的文件,而不是一个。

我是不是遗漏了什么?如有任何帮助,我们不胜感激!

EN

Stack Overflow用户

发布于 2020-04-24 22:34:35

我相信myClass是在一个单独的窗口/进程中执行的,所以你没有注意到。

尝试使用诸如input()之类的命令来查看是否确实打开了另一个窗口。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48917704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档