在代码部署的过程当中往往需要使用管理员权限执行代码,这里涉及多种情况:

Linux

Linux上使用管理员权限执行代码是最简单的,只需要使用root登录就可以直接使用管理员权限执行代码,代码具有调用系统资源的权限。

windows 编辑器上

编辑器获得管理员权限其实情况很少,但是并不是没有。获得管理员权限的编辑器有三个好处:

  • 直接打开管理员才能够打开的文件夹查看内容
  • 打开管理员权限的文件
  • 执行的代码都是管理员权限
  • 快捷键拥有最高权限,不会与其他没有管理员权限的软件产生快捷键冲突
  • 可能有更多功能提供(看编辑器情况)

个人现在最常遇到的问题是,我执行的代码需要管理员权限才能够正常执行,需要调用一些系统文件,但是编辑器不是,这就导致代码没有权限,不能够调试。但是打开也很简单:

  • 右键编辑器->属性->兼容性->以管理员身份运行此程序
  • 右键编辑器->管理员权限运行

windows 文件

文件的执行有两种,第一种是以管理员权限启动cmd执行,第二种就是在代码当中获取管理员权限,保证程序从逻辑上一定是拥有管理员权限的。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import ctypes, sys
import os

def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
# 这里写入需要管理员权限执行的操作
pass
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)