处理 Windows NotificationIcons 使用的 GUID 的正确方法

2024-03-19

微软文档如下:

通过验证是否只有单个应用程序注册使用 GUID 指定的通知图标,可以防止欺骗。第一次调用 Shell_NotifyIcon(NIM_ADD, ...) 时执行此注册,并存储调用应用程序的完整路径名。如果您稍后将二进制文件移动到其他位置,系统将不允许再次添加图标。请参阅 Shell_NotifyIcon 了解更多信息。

自文档于Shell_NotificyIcon https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shell_notifyicona关于如何再次注销GUID的内容相当稀疏,出现以下问题:当我再次卸载相应的应用程序时,如何正确删除NotificationIcon?

有描述的蛮力方法here https://answers.microsoft.com/en-us/windows/forum/all/how-to-remove-old-notification-icons-from-the/c66892b4-51a9-44fa-853f-b17cdff5ed2f,这会删除所有系统图标,并且必须再次重新启动进程 explorer.exe。不过我想知道是否存在更准时的方法。

另外一个选择 https://stackoverflow.com/questions/7432319/notifyicondata-guid-problem每次用户安装应用程序或将其移动到新位置时,都会创建一个新的 GUID。这被认为是最佳实践吗?


微软员工 10 年前的回答 https://social.msdn.microsoft.com/Forums/en-US/08591224-9719-4f39-8413-8d650d199260/how-do-i-unregister-a-notify-icons-guidbinary-pair?forum=windowsgeneraldevelopmentissues谈到更改路径时可能的解决方法,同时声称无法取消注册:

没有提供取消注册的方法。如果您的二进制文件经过 Authenticode 签名,则注册可以随应用程序一起移动。请参阅 NOTIFYICONDATA 文档中的故障排除部分。

注意 当原始二进制文件和移动的二进制文件均由同一家公司进行 Authenticode 签名时,移动文件的唯一例外情况会发生。在这种情况下,设置将在移动过程中保留。

当为要更新的路径创建图标时,两个二进制文件需要同时存在。

我个人从不使用GUID,我只是使用Win95 中的经典ID 模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 Windows NotificationIcons 使用的 GUID 的正确方法 的相关文章

随机推荐