Python+TK 添加删除开机启动项
本帖最后由 dfydfydfy896 于 2024-8-6 22:10 编辑网上想找个几十K绿色软件没找到,于是想借助GPT自己写一个吧。
py代码是很少,但打包后也要10M了,聊胜于无,胜在干净。
之前的版本有个路径斜杠符号反了的小错误,需要修改下。
file_path = os.path.normpath(file_path)# 规范化路径
filename = os.path.basename(file_path)
import tkinter as tk
from tkinter import filedialog, messagebox
import winreg
import os
# 获取当前用户的启动项注册表路径
startup_reg_path = r"Software\Microsoft\Windows\CurrentVersion\Run"
startup_reg_key = winreg.HKEY_CURRENT_USER
def get_startup_items():
try:
key = winreg.OpenKey(startup_reg_key, startup_reg_path, 0, winreg.KEY_READ)
startup_items = []
index = 0
while True:
try:
name, value, _ = winreg.EnumValue(key, index)
startup_items.append(name)# 存储启动项的名称而非值
index += 1
except OSError:
break
winreg.CloseKey(key)
return startup_items
except FileNotFoundError:
return []
def add_startup_item(file_path):
try:
file_path = os.path.normpath(file_path)# 规范化路径
filename = os.path.basename(file_path)
key = winreg.OpenKey(startup_reg_key, startup_reg_path, 0, winreg.KEY_WRITE)
winreg.SetValueEx(key, filename, 0, winreg.REG_SZ, file_path)
winreg.CloseKey(key)
messagebox.showinfo("添加启动项", f"已成功添加启动项: {filename}")
except Exception as e:
messagebox.showerror("添加启动项失败", f"添加启动项时出错: {str(e)}")
def remove_startup_item(item_name):
try:
key = winreg.OpenKey(startup_reg_key, startup_reg_path, 0, winreg.KEY_WRITE)
winreg.DeleteValue(key, item_name)
winreg.CloseKey(key)
messagebox.showinfo("删除启动项", f"已成功删除启动项: {item_name}")
except FileNotFoundError:
messagebox.showwarning("删除启动项", f"启动项 '{item_name}' 不存在")
except Exception as e:
messagebox.showerror("删除启动项失败", f"删除启动项时出错: {str(e)}")
def select_file():
file_path = filedialog.askopenfilename(filetypes=[("Executable files", "*.exe")])
if file_path:
add_startup_item(file_path)
update_listbox()
def update_listbox():
startup_items = get_startup_items()
listbox.delete(0, tk.END)
for item in startup_items:
listbox.insert(tk.END, item)
def refresh_listbox():
update_listbox()
def delete_selected_item():
selected_index = listbox.curselection()
if selected_index:
selected_item = listbox.get(selected_index)
remove_startup_item(selected_item)
update_listbox()
# 创建Tkinter界面
root = tk.Tk()
root.title("启动项管理程序")
frame_top = tk.Frame(root)
frame_top.pack(pady=10)
add_button = tk.Button(frame_top, text="添加启动项", command=select_file)
add_button.pack(side=tk.LEFT, padx=10)
remove_button = tk.Button(frame_top, text="删除选中启动项", command=delete_selected_item)
remove_button.pack(side=tk.LEFT)
refresh_button = tk.Button(frame_top, text="手动刷新", command=refresh_listbox)
refresh_button.pack(side=tk.LEFT, padx=10)
frame_bottom = tk.Frame(root)
frame_bottom.pack(pady=20)
listbox = tk.Listbox(frame_bottom, width=50)
listbox.pack()
update_listbox()
root.mainloop()
打包成单一exe
pyinstaller --onefile --noconsole --paths=C:\python\tcl\tcl8,C:\python\tcl\tcl8.6,C:\python\tcl\tk8.6 show.py
kkk013 发表于 2024-8-6 17:08
为啥子,不直接在任务管理器的启动栏里操作
还是感谢分享
这个吧,不同的系统,不太一样,关键是对系统设置不太熟练的人来说,取消一个启动项真的很难得{:1_899:} 仰望大佬{:1_893:} 为啥子,不直接在任务管理器的启动栏里操作
还是感谢分享 python的强大啊 学习啦,不错 感谢分享,学习一下
本帖最后由 kangta520 于 2024-8-6 18:46 编辑
谢谢分享,我用customtkinter也写了一个 感谢分享,正好学习一下新的技术 直接用火绒的启动项管理就行了,你这个都快有人家火绒一半的体积了
页:
[1]
2