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

Python监听Windows10通知弹窗遇OSError(-2147023728)错误求助

Windows 10通知监听脚本报错[WinError -2147023728]的解决办法

这个错误的核心原因是UserNotificationListener需要系统级的通知访问权限,新笔记本未授权该权限,导致无法绑定监听事件。以下是具体解决步骤:

1. 手动开启通知访问权限

  • 打开Windows设置 → 系统 → 通知和操作 → 下拉至底部找到「通知访问权限」
  • 在列表中找到你的Python运行程序(或脚本对应的虚拟环境Python.exe),开启权限开关

2. 代码增加权限检查逻辑

在原有脚本中加入权限校验,避免直接报错,同时明确权限状态:

from winsdk.windows.ui.notifications.management import UserNotificationListener, UserNotificationListenerAccessStatus
from winsdk.windows.ui.notifications import KnownNotificationBindings


verification_number = None


def handler(a, b):
    global verification_number
    unotification = a.get_notification(b.user_notification_id)
    if hasattr(unotification, "app_info"):
        text_sequence = unotification.notification.visual.get_binding(KnownNotificationBindings.get_toast_generic()).get_text_elements()
        it = iter(text_sequence)
        while True:
            next(it, None)
            if it.has_current:
                if "verification" in it.current.text:  # 注:原代码拼写错误varification改为verification
                    verification_number = it.current.text[-6:-1]
                    print(verification_number)
            else:
                break            
    else:
        pass


listener = UserNotificationListener.get_current()
# 检查并请求权限
access_status = listener.request_access_async().get_result()

if access_status == UserNotificationListenerAccessStatus.ALLOWED:
    listener.add_notification_changed(handler)
    print("通知监听已启动")
else:
    print(f"权限获取失败,状态: {access_status}")
    print("请先在系统设置中为当前Python程序开启通知访问权限")

注:原代码中"varification"是拼写错误,改为正确的"verification"能提高验证码识别准确率

3. 额外注意事项

  • 如果使用虚拟环境运行脚本,要确保虚拟环境下的Python.exe被添加到通知权限列表
  • 权限开启后,重启脚本或Python解释器才能生效

[WinError -2147023728]对应的系统提示"no element found",本质是权限未授权导致系统拒绝了监听绑定请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:43:30