需求

有些应用每次启动都需要用管理员权限运行,比如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被修复了。如果有人测试成功的话,可以私聊我下原因

Python给exe添加以管理员运行的属性的更多相关文章

  1. 在右键中添加以管理员运行CMD命令提示符 (进化版)

    直接代码,转过来的 20180316更新添加快捷键A,点右键按A即可: Windows Registry Editor Version 5.00 ; Created by: Shawn Brink ; ...

  2. python unittest 框架添加测试用例及运行

    找出要测试的testcase,并加入到Testsuite,运行Testsuite并把结果给TestResult1.创建TestSuite实例对象suite = unittest.TestSuite() ...

  3. python程序,实现以管理员方式运行程序,也就是提升程序权限

    quest UAC elevation from within a Python script? 我希望我的Python脚本能够在Vista上复制文件. 当我从普通的cmd.exe窗口运行它时,不会生 ...

  4. Pyinstaller 打包python 到exe 在windows下免python环境运行python

    在创建了独立应用(自包含该应用的依赖包)之后,还可以使用 PyInstaller 将 Python 程序生成可直接运行的程序,这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上 ...

  5. win8中让cmd.exe始终以管理员身份运行

    最近在学习配置本地服务器,在命令行启动mysql时总是由于权限不足而失败, Win+R -- cmd ,这样总是不能,还要找到cmd.exe右键以管理员身份运行cmd,再 net start mysq ...

  6. MSI右键添加管理员运行.reg

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Msi.Package\shell\runas]@="右键以管理员运行MSI& ...

  7. cmder 常用配置(包括默认管理员运行和解决中文乱码)

    简介 cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令. 下载 官网地址:http://cmder.net/ 下载的时候,会有 ...

  8. Python打包EXE神器 pyinstaller

    最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...

  9. python制作exe可执行文件的方法---使用pyinstaller

    python制作exe可执行文件的方法---使用pyinstaller   python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinsta ...

  10. python的exe反编译

    目录 python的exe反编译 方法一.使用archive_viewer.py提取pyc 方法二.使用pyinstxtractor.py提取pyc python的exe反编译 驱动人生样本为pyth ...

随机推荐

  1. PyCharm的基础了解

    简单了解PyCharm PyCharm的简单使用 修改主题 1 2 切换解释器 1 如何创建pythin文件 1 2 3 4 注释语法 行注释 这里是注释 块注释 '''这里是注释''' 常量和变量的 ...

  2. 解决软件安装无法自定义文件夹,自动安装在C盘 (Windows系统)

    其实就是软链接的简单应用 1.软件已经自动安装 2.完全退出当前软件 3.通过软件图标的属性找到其实际的安装目录 4.进入该软件的安装目录 5.将该软件整个剪切(你没有看错)到指定文件夹(自定义的安装 ...

  3. bash: accelerate: command not found

    py AIGC Stable Diffusion文生图Lora模型微调实现虚拟上装详情     实验手册 实验报告   3. 安装Diffusers 进入PAI-DSW开发环境. 登录PAI控制台. ...

  4. CSS 还原拉斯维加斯球数字动画

    我的小册 <CSS 技术揭秘与实战通关>上线了,想了解更多有趣.进阶.系统化的 CSS 内容,可以猛击 - LINK. 最近大家刷抖音,是否有刷到拉斯维加斯的新地标 「Sphere」: 场 ...

  5. 创建vue项目并搭建JSONSERVER

    1.该前提是你已经搭建好vue-cli脚手架,开始创建一个新项目,输入 vue init webpack demo(demo是自定义项目名). 2.cd demo 进入项目安装依赖 3.在已经创建的项 ...

  6. cv2 数学基础---矩阵微分

    矩阵微分基础知识 定义 重要结论 应用 定义 (1) 向量对标量求导 矩阵对标量求导 我们可以看到上述求导过程实际上就是不同函数对变量求导,然后按照向量或者矩阵的形式排列,注意这里结果的结构应该与函数 ...

  7. js前端操作,c#后端下发xml文件

    前端: var xmlLanguageDoc; $.ajax({         url: "/GiveMeXML",//此处可随意定义,不一定是路径.在c# ,请求被捕获后,由c ...

  8. Quartus 入门

    转载请标明出处:https://www.cnblogs.com/leedsgarden/p/17790320.html 本文介绍的是Quartus的免费版,可以满足基本的教学需要 如果你用的是Xili ...

  9. seed 随机种子的作用

    在随机数生成中,种子(seed)是一个起始值,用于确定随机数生成器的初始状态.通过设置相同的种子,可以确保每次运行程序时生成的随机数序列都是相同的.这种确定性的随机数生成可以带来以下几个好处: 可复现 ...

  10. (转)用GPU做DeepLearning要比CPU快40~80倍

    The speed difference of CPU and GPU can be significant in deep learning. But how much? Let's do a te ...