Python给exe添加以管理员运行的属性

需求

有些应用每次启动都需要用管理员权限运行,比如Python注入dll时,编辑器或cmd就需要以管理员权限运行,不然注入就会失败。

这篇文章用编程怎么修改配置实现打开某个软件都是使用管理员运行,就不用每次都右键点击以管理员身份运行此程序。主要是给小白配置,防止他忘了以管理员权限运行,又跑过来问我为啥Hook失败了

非编程方式

如果是自己想修改的话:右键软件或桌面快捷方式,兼容性->然后勾选以管理身份运行此程序

编程方式

有代码的软件

如果你需要运行的软件是自己写的,想在运行时申请管理员权限,可以在清单文件里增加一行: <requestedExecutionLevel level='requireAdministrator' uiAccess='true' />

在visual studio中,可以右键项目属性,链接器->清单文件,UAC执行级别改成requireAdministrator

其他软件

软件本身没有申请管理员权限,而你又想让他以管理员权限运行。那就得知道非编程方式勾选的那个配置实际保存在哪里,你可以直接修改它保存的位置也能达到一样的效果

经过搜索发现,这个配置是保存在注册表中。

当前用户对应的注册表路径 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 所有用户统一的配置路径 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

当你在右键勾选这个选项时,当前用户的注册表路径下就会多出一个键来,键名是软件的绝对路径,值则是~ RUNASADMIN

如果你删除掉这个键,则在右键看的时候,选项是没有被勾选上的 另外,其他几个选项也是在这个路径下,分别对应不同的值,这里我就不演示了。

这里以Python为例修改注册表,让Python每次都以管理员权限启动,这种其实属于危险行为,因为Python也可以在你电脑上做任何事

import ctypes 
import sys
from winreg import *


def add_runas():
    exe_path = sys.executable
    # 判断当前运行的Python是否具有管理员权限,没有则申请
    if not ctypes.windll.shell32.IsUserAnAdmin():
        ctypes.windll.shell32.ShellExecuteW(None, "runas", exe_path, __file__, None, 1)
    reg_path = r"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
    reg_key = OpenKey(HKEY_CURRENT_USER, reg_path, access=KEY_SET_VALUE | KEY_READ)
    runas_value = "~ RUNASADMIN"
    try:
        value = QueryValueEx(reg_key, exe_path)
    except FileNotFoundError:
        SetValueEx(reg_key, exe_path, 0, REG_SZ, runas_value)
    else:
        if runas_value[2:] not in value[0]:
            SetValueEx(reg_key, exe_path, 0, REG_SZ, value[0] + ' ' + runas_value[2:])

if __name__ == "__main__":
    add_runas() 
其他方式

搜索的时候还看到可以通过修改快捷方式来达到这样的效果,不过我测试并不行,可能在最新的系统这个属于bug被修复了。如果有人测试成功的话,可以私聊我下原因

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 作为机器人,我并不是很清楚您需要的图书管理系统的具体要求。因此,以下是一个基于Python语言的简单图书管理系统的实现思路,仅供参考。 1. 定义图书信息类Book,包含属性如书名、作者、出版社、ISBN编码、图书数量等,并实现相应的方法如图书借出、归还、查询等。 2. 实现用户类User,包含属性如姓名、ID、借阅数量等,并实现相应的方法如借书、还书、查询已借阅图书等。 3. 定义图书馆类Library,包含属性如馆藏图书、借阅用户等,并实现相应的方法如借书、还书、查询图书、查询用户等。 4. 采用文件存储方式,将图书信息与用户信息保存到相应的文件中,从而实现数据的持久化。 5. 在程序运行时,可以采用命令行或GUI界面进行交互,实现基本的图书管理功能。 总之,实现一个完整的图书管理系统需要考虑的因素较多,以上仅为其中的一些基本思路,具体实现方式还需要根据具体需求进行调整。 ### 回答2: Python图书管理系统是一款基于Python语言开发的软件,用于对图书馆或图书店的图书进行管理。 该系统具备如下功能: 1. 图书信息管理:可以添加、编辑、删除图书的基本信息,包括书名、作者、出版社、出版日期、ISBN号等。管理员可以通过系统快速查找某本图书的信息。 2. 图书借阅管理:读者可以通过系统查询图书的可借状态,并进行借阅操作。系统会自动记录借阅时间和归还时间,并提醒读者归还图书。 3. 图书归还管理:读者可以通过系统归还已借图书。系统会自动计算逾期天数,并产生逾期费用。 4. 图书搜索功能:读者和管理员都可以通过系统根据关键字搜索图书。系统会根据作者、书名等信息进行模糊匹配,并显示相关的图书信息。 5. 用户管理:系统支持管理员账号和读者账号的管理。管理员可以添加、删除、编辑读者账号,也可以修改自己的密码。 6. 图书统计与报表:系统可以进行图书借阅情况的统计,并生成相关的报表,方便管理员进行数据分析和决策。 通过这款图书管理系统,图书馆或图书店能够更加高效地管理图书,提供更好的服务体验。基于Python的开发语言,系统具备开源、易于维护和扩展的特点,有助于应对各种需求的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值