Python实现开机自启代码及取消(通过修改注册表)

该文章介绍了如何使用Python的sys、os和winreg模块来管理Windows系统的开机自启动项目。提供了两个函数,add_to_startup()用于将程序添加到开机启动,remove_from_startup()则用于从启动项中移除。文章包含了详细代码示例和函数实现步骤,并解释了winreg.OpenKey()函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,先上代码

代码部分

import sys
import os
import winreg
def add_to_startup(name,file_path=""):
	#By IvanHanloth
    if file_path == "":
        file_path = os.path.realpath(sys.argv[0])
    auth="IvanHanloth"
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run",winreg.KEY_SET_VALUE, winreg.KEY_ALL_ACCESS|winreg.KEY_WRITE|winreg.KEY_CREATE_SUB_KEY)#By IvanHanloth
    winreg.SetValueEx(key, name, 0, winreg.REG_SZ, file_path)
    winreg.CloseKey(key)

def remove_from_startup(name):
    auth="IvanHanloth"
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", winreg.KEY_SET_VALUE, winreg.KEY_ALL_ACCESS|winreg.KEY_WRITE|winreg.KEY_CREATE_SUB_KEY)#By IvanHanloth
    try:
        winreg.DeleteValue(key, name)
    except FileNotFoundError:
        print(f"{name} not found in startup.")
    else:
        print(f"{name} removed from startup.")
    winreg.CloseKey(key)

使用说明

基于sys、os、winreg模块实现的程序开机自启,其中add_to_startup()函数用于添加自启动项,remove_from_startup()函数用于删除启动项

依赖模块

无需自行安装额外模块
自带模块:sys、os、winreg

参数说明

name(str):添加到注册表中的键值,需要具有一定标识性、独特性,避免与其他键重复,推荐使用程序名称
file_path(str)(可选):需要添加到启动项的文件地址,不填写默认为当前脚本所在地址

使用实例(For 可执行文件)

#注意!演示默认你已经引入了模块和函数

#添加当前文件至启动项
add_to_startup("MyApp")

#添加其他文件至启动项
add_to_startup("AnotherApp","D:\path\another.exe")

#删除第一次添加的启动项
remove_from_startup("MyApp")

#删除第二次添加的启动项
remove_from_startup("AnotherApp")

使用实例(For Python文件)

#注意!演示默认你已经引入了模块和函数

#添加当前py文件至启动项
add_to_startup("MyPythonFile",sys.executable+os.path.realpath(sys.argv[0]))

#添加其他py文件至启动项
add_to_startup("AnotherPythonFile",sys.executable+"D:\path\another.py")

#删除第一次添加的启动项
remove_from_startup("MyPythonFile")

#删除第二次添加的启动项
remove_from_startup("AnotherPythonFile")

函数实现步骤&winreg.OpenKey()函数详解

不告诉你,被我吃掉了
来作者博客看>>
https://blog.ivan-hanloth.cn/index.php/archives/593/

### 如何在不同操作系统中禁用程序的开机自启动 #### Windows 系统 在 Windows 中可以通过修改注册表或者使用任务管理器来实现禁用某些程序的开机。如果不想让某个特定的应用程序(例如 Microsoft Edge)随系统一起动,可以按照以下方式操作: - **通过任务管理器** 打开任务管理器并切换到“动”选项卡,在这里可以看到所有设置为开机动的应用列表。右键点击想要禁用的应用程序,并选择“禁用”。此方法简单直观,适合大多数用户[^4]。 - **编辑注册表项** 对于一些未列于任务管理器中的项目,则可能需要手动调整系统的注册表配置。运行 `regedit` 命令进入注册表编辑界面后导航至路径 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 或者 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ,找到对应条目删除即可阻止其再次加载[^2]。 #### Linux (基于 Yocto 和 Systemd 的环境) 针对嵌入式开发平台如采用 Yocto Project 构建的操作系统而言,通常依赖 systemd 来控制服务的状态和服务行为。要停止某项服务作为默认状态下的自动激活组件,可采取如下措施之一: - 使用命令行工具直接操控 unit 文件属性: ```bash sudo systemctl disable <service_name>.service ``` 这一步骤会移除链接文件 `/etc/systemd/system/multi-user.target.wants/<service_name>.service`, 进而防止该单元在后续引导过程中被执行[^1]. 另外还可以考虑更改 .service 定义本身的内容, 把其中 `[Install]` 部分里的 WantedBy 参数改为空字符串或者其他非 multi-user.target 的目标名称. #### macOS 平台处理办法 macOS 下主要依靠 Launch Agents/Launch Daemons 实现后台进程持续运行以及按需触发的任务调度机制。若发现存在不必要常驻内存内的软件干扰日常作业效率的话,那么应当着手清理这些未经许可擅自挂载的服务实例。 - 查找可疑 entries 列表: ```bash launchctl list | grep -v "\-\t" ``` 一旦定位到了确切的目标 daemon/agent identifier 后续就可以运用 unload 动作即时终止关联 activity 同时永久注销定义记录: ```bash sudo launchctl unload /Library/LaunchDaemons/com.example.service.plist ``` 注意替换实际存在的 plist 路径地址完成上述指令序列[^3]. ```python import winreg as reg def add_to_startup(file_path): key = reg.HKEY_CURRENT_USER key_value = r"Software\\Microsoft\\Windows\\CurrentVersion\\Run" open_key = reg.OpenKey(key,key_value,0,reg.KEY_SET_VALUE) reg.SetValueEx(open_key,"MyApp",0,reg.REG_SZ,file_path) reg.CloseKey(open_key) # Example usage of adding an app to startup via Python script. add_to_startup(r"C:\path\to\application.exe") ``` 以上代码片段展示了如何编程方式向 windows 注册表添加一项新的开机动项;反之亦然,只需调用 SetValueEx 方法前先确认已打开正确的密钥句柄再执行 DeleteValue 即能达成相反效果即取消指定项目的开动作绑定关系。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值