孩子还小,不懂事写着玩的
警告:请谨慎使用。该程序会修改全系统所有可执行文件图标(其实就是注册表),在重新开机后生效
演示:
把应用程序图标改为记事本🗒
原理:
Windows 操作系统通过注册表来存储和管理各种系统配置和应用程序的相关信息。这段代码通过操作注册表中与 .exe
文件类型相关的键值,将默认的图标路径更改为指定的路径,从而实现更改所有 .exe
文件默认图标的效果。
需要注意的是,修改注册表可能会对系统产生不可预测的影响,并且在某些情况下可能违反系统的使用政策或导致系统不稳定。请谨慎操作,并确保您有足够的知识和权限来进行这样的修改。
import winreg
import ctypes
import sys#使用管理员身份打开程序
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)def set_exe_icon(icon_path):try:# 打开相关的注册表项key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, '.exe', 0, winreg.KEY_SET_VALUE)winreg.SetValue(key, '', winreg.REG_SZ, 'exefile')key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, 'exefile\\DefaultIcon', 0, winreg.KEY_SET_VALUE)winreg.SetValue(key, '', winreg.REG_SZ, icon_path)print("修改默认图标成功!")except Exception as e:print(f"修改默认图标失败:{str(e)}")# 示例:将记事本的图标作为默认图标
icon_path = r'C:\Windows\System32\notepad.exe,0' # 指定记事本的图标路径set_exe_icon(icon_path)
这段代码的功能是通过修改 Windows 注册表来设置所有 .exe
文件的默认图标。
代码解释:
以下是对代码的详细解释:
-
import winreg
和import os
:导入了用于操作 Windows 注册表的winreg
模块和操作系统相关的os
模块。 -
set_exe_icon
函数:winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, '.exe', 0, winreg.KEY_SET_VALUE)
:打开注册表中的.exe
项,为后续的写入操作做准备。winreg.SetValue(key, '', winreg.REG_SZ, 'exefile')
:将.exe
项的值设置为exefile
。winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, 'exefile\\DefaultIcon', 0, winreg.KEY_SET_VALUE)
:打开exefile
下的DefaultIcon
项。winreg.SetValue(key, '', winreg.REG_SZ, icon_path)
:将DefaultIcon
项的值设置为指定的图标路径。