猫史档案馆


Python获取管喵权限

用户:tq_xyytq_xyy查看:4 回复:2 评论:4 创建时间:2020-05-09T09:59:38


你如果在C盘根目录读写文件,那么你会得到这样的结果:

Traceback (most recent call last):
  File "D:\admin.py", line 2, in <module>
    with open("C:\\test.txt","w") as f:
PermissionError: [Errno 13] Permission denied: 'C:\\test.txt'

很明显,这是权限错误,在C盘的大多数位置(如Windows,Progra喵ata)需要管喵权限才能读取和写入文件,所以自然会报错。

那么怎么才能获取管喵权限?

我们可以用

ctypes.windll.shell32.IsUserAnAdmin()

知道我们是否有管喵权限,如果没有会报错。我们再用

ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

来获取管喵权限,这时会弹出一个窗口:

center_image

我们点击是,这样我们获取了管喵权限,可以在C盘上愉快的读写文件了。但是还有一些地方不能读写(如C:\Windows\System32),这些地方需要STSTEM或者TrustedInstaller权限才可以写入,不过大部分地方还是可以的。

下面放完整代码:

from __future__ import print_function
import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False
if is_admin():
    #这里放需要管喵权限的代码
    pass
else:
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)


回复

上一页1 页 / 共 1下一页
CaTionalCaTional

直接关掉UAC一了百了

点赞0


评论


tq_xyytq_xyy

纠错:

Progra喵ata --> ProgramData

点赞0


评论