You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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}: 权限不足,无法修改注册表")

修正说明

  1. 注册表句柄处理:通过winreg.OpenKey依次打开父项和子项,为SetValueEx提供合法的PyHKEY对象
  2. 键值修正:将Enable Chrome Updates的值从0改为1,符合启用更新的配置要求
  3. 日志优化:使用正确的UNC共享路径格式,采用追加模式a记录每台主机的信息,避免覆盖原有日志
  4. 异常扩展:增加权限错误捕获,提升脚本稳定性
  5. 资源管理:使用with语句自动管理注册表和文件句柄,无需手动关闭

内容的提问来源于stack exchange,提问作者Edarb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:50:29