显示“获取来自这些发件人的通知”部分一些应用。
但是有很多其他应用程序在操作中心显示通知,但未列在“从这些发件人获取通知”列表中。
在补丁 1607 之前,通知数据位于 Windows 注册表通知部分的 AppDB 字段中,之后位于 c:\Users%USERNAME%\AppData\Local\Microsoft\Windows\Notifications\wpndatabase.db,即 SQL lite DB。
这个小型数据库包含所有最近(最近 3 天)的通知、通知设置和已发送通知的应用程序列表:
如您所见,有 Chrome、Lightshot、一些系统应用程序(在设置中禁用了通知)和另外两个名为 someapp 和 mywebapp 的应用程序。这两个应用程序可以发送通知,这些通知会显示出来,也可以从 toast 栏中禁用,但它们未列在“从这些发件人获取通知”列表中,这使得重新启用这些应用程序的通知变得非常困难 - 因为这涉及编辑或删除 wpndatabase.db 文件。
我尝试了几次测试,发现了一个有趣的场景,这似乎证明 wpndatabase.db 不仅是“从这些发件人获取通知”列表的数据来源,场景如下:
- 在“获取来自这些发件人的通知”中禁用应用程序的通知(我使用了 Lightshot)
- 停止WPNUserService,删除wpndatabase.db,启动WPNUserService
- 选中“从这些发件人获取通知” - 现在是空的。
- 获取应用的新通知(使用 Lightshot 创建新截图以制作通知)。通知未出现,因为它仍处于禁用状态!
- 勾选“从这些发件人获取通知” - 列表中有 Lightshot,但已禁用!这意味着 wpndatabase.db 不是通知设置的最终来源。
因此,我开始进一步搜索,发现将“Enabled”DWORD:32 添加到 Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings<Appname> 会使 wpndatabase.db 的 HandlerSettings 表值 s:toast 设置为 0。因此,wpndatabase.db 似乎依赖于注册表设置。几项额外的检查证明,将“Enabled”设置为 0 将导致在下次通知或 Windows Push Notifications 用户服务重新启动时将 s:toast 设置为 0。但是,将 Enabled 更改为 1 或将其删除不会产生任何效果:因此,它似乎是某种遗留设置,WPN 用户服务会考虑到这一点。
问题很简单:为什么有些应用程序没有列在“从这些发件人获取通知”部分,考虑到所有简单的选项都可以(允许后台应用程序、专注助手已关闭、通知服务正在运行等等)
其他一些参考: https://www.tenforums.com/tutorials/4111-turn-off-notifications-apps-senders-windows-10-a-5.html https://www.mdpi.com/2673-6756/2/1/7
网络上提到了类似的问题: https://www.tenforums.com/tutorials/4111-turn-off-notifications-apps-senders-windows-10-a.html#post8063
答案1
我问完问题后就找到了答案。
它基于这篇文章:https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/hh802762(v=vs.85)
没有有效的快捷方式安装在“开始”屏幕或“所有程序”中,您无法从桌面应用程序发出 Toast 通知。
当我在开始菜单根目录中为丢失的应用程序创建快捷方式时,该应用程序最终出现在“从这些发件人获取通知”部分。
似乎该问题特定于某些程序,这些程序使用某些特定方法来发出通知,并且此方法采用了“AppUserModelID”参数。
窗户真是一个奇怪的东西。