Chrome更新修复脚本报错咨询:注册表项检查与修改需求
解决Chrome无法更新的注册表脚本错误
问题背景
为批量解决Chrome无法更新的问题,需编写脚本实现:检查目标注册表项是否存在,存在则将Enable Chrome Updates值改为1;不存在则在指定路径的日志文件中记录主机名。原脚本运行时出现错误。
原脚本
import winreg import socket Update_Path = "SOFTWARE\\Policies\\Google\\Update" Key = "Update{8A69D345-D564-463C-AFF1-A69D9E530F96}" No_Reg_PC = socket.gethostname() try: winreg.SetValueEx(Key, "Enable Chrome Updates", 0, winreg.REG_DWORD, 0) except FileNotFoundError: with open('\\*\\*\\Scripts\\Logs\\ChromeUpdates.txt', 'w') as f: f.write(f'{No_Reg_PC} didn\'t have the appropriate reg keys and couldn\'t enable Chrome updates') f.close()
报错信息
Traceback (most recent call last): File "u:\RandoScripts\ChromeUpdatesv2.py", line 9, in <module> winreg.SetValueEx(Key, "Enable Chrome Updates", 0, winreg.REG_DWORD, 0) TypeError: The object is not a PyHKEY object
问题原因及修正方案
报错核心原因是winreg.SetValueEx第一个参数需要已打开的注册表句柄(PyHKEY对象),而非键名字符串。此外原脚本还存在值设置错误、日志路径格式错误、文件写入模式错误等问题,修正后的脚本如下:
import winreg import socket # 配置参数 UPDATE_PATH = r"SOFTWARE\Policies\Google\Update" TARGET_KEY_NAME = "Update{8A69D345-D564-463C-AFF1-A69D9E530F96}" LOG_PATH = r"\\server\Scripts\Logs\ChromeUpdates.txt" # 替换为实际共享路径 HOSTNAME = socket.gethostname() try: # 打开HKEY_LOCAL_MACHINE下的父注册表项 with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, UPDATE_PATH, 0, winreg.KEY_WRITE) as parent_key: # 打开目标子键 with winreg.OpenKey(parent_key, TARGET_KEY_NAME, 0, winreg.KEY_WRITE) as target_key: # 设置启用更新的键值(1为启用) winreg.SetValueEx(target_key, "Enable Chrome Updates", 0, winreg.REG_DWORD, 1) print(f"{HOSTNAME}: Chrome更新已启用") except FileNotFoundError: # 追加模式写入日志,避免覆盖历史记录 with open(LOG_PATH, 'a', encoding='utf-8') as f: f.write(f"{HOSTNAME} 不存在对应注册表项,无法启用Chrome更新\n") print(f"{HOSTNAME}: 未找到注册表项,已记录日志") except PermissionError: # 捕获权限不足的异常 with open(LOG_PATH, 'a', encoding='utf-8') as f: f.write(f"{HOSTNAME} 脚本权限不足,无法修改注册表\n") print(f"{HOSTNAME}: 权限不足,无法修改注册表")
修正说明
- 注册表句柄处理:通过
winreg.OpenKey依次打开父项和子项,为SetValueEx提供合法的PyHKEY对象 - 键值修正:将
Enable Chrome Updates的值从0改为1,符合启用更新的配置要求 - 日志优化:使用正确的UNC共享路径格式,采用追加模式
a记录每台主机的信息,避免覆盖原有日志 - 异常扩展:增加权限错误捕获,提升脚本稳定性
- 资源管理:使用
with语句自动管理注册表和文件句柄,无需手动关闭
内容的提问来源于stack exchange,提问作者Edarb
相关产品推荐
相关产品推荐

