用户:
tq_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)
来获取管喵权限,这时会弹出一个窗口:
我们点击是,这样我们获取了管喵权限,可以在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)