C# 如何显示自动登录期间运行的NotifyIcon和SSDP服务

C# 如何显示自动登录期间运行的NotifyIcon和SSDP服务,c#,.net,vb.net,C#,.net,Vb.net,我有一个应用程序(目标是.Net Framework 2.0)正在系统启动时运行,我正在尝试显示一个Notify图标 当我的程序启动时,当用户正常运行它或在系统登录后作为子进程启动时,一切正常 如果我的应用程序在系统使用POSReady2009(基本上是XP和单用户设置)执行自动登录时启动。然后Notify图标将永远不会激活 如果您随后(在计时器中)在任何时间点检查图标的.Visible,它总是报告它是Visible=true 如果禁用SSDPSrv并重新启动计算机,图标将正确显示。 我怀疑这与

我有一个应用程序(目标是.Net Framework 2.0)正在系统启动时运行,我正在尝试显示一个Notify图标

当我的程序启动时,当用户正常运行它或在系统登录后作为子进程启动时,一切正常

如果我的应用程序在系统使用POSReady2009(基本上是XP和单用户设置)执行自动登录时启动。然后Notify图标将永远不会激活

如果您随后(在计时器中)在任何时间点检查图标的.Visible,它总是报告它是Visible=true

如果禁用SSDPSrv并重新启动计算机,图标将正确显示。 我怀疑这与安装在.NET2系统顶部的.NET3.5sp1有关

是否有一些我应该遵循的过程,以确保我的NotifyIcon始终对用户可用

我已经安装了
RegisterWindowMessage(“TaskbarCreated”)
,但我没有收到调用此消息的消息,除非您禁用Explorer.exe并重新启动它。即使如此,NotifyIcon还是会在内部注册这些通知,因此不需要它

我很乐意暂停程序的启动,但一旦程序启动,我希望图标显示正确

如果有一个KB的文章,我不能找到详细说明这一点,我也很高兴

嗯。。。真奇怪

这可能不起作用,也可能不是最好的方法——但首先,请尝试将
NotifyIcon1.Visible=True
放在加载事件中

如果这不起作用,为什么不尝试将其添加到计时器中

NotifyIcon1.Visible = False
NotifyIcon1.Visible = True
然后,每次计时器滴答作响时,都应该隐藏并显示图标,至少这样您可以看到它是否工作。可能只运行计时器10次,然后就结束了,这样脚本应该隐藏并显示图标10次,此时系统应该准备就绪


让我知道这是否有效——如果不行,我会刮胡子,再想想

这有点傻,但是endedup需要修改启动过程来处理这个问题

使程序成为自己的快捷方式,安装程序将其放入启动文件夹

触发它的程序不再自动启动它。相反,我们在启动后通知另一个程序(删除触发器文件)

然后,另一个程序监控用户是否关闭我们,或者我们只是崩溃,并自动重新打开程序。[如果您希望完全关闭系统,需要遵循适当的流程]

在程序启动过程中,我们检查SSDP服务是否可用且未设置为禁用。。如果是,请等待此服务启动。然后检查SQLServer是否正在运行

然后,我们准备NotifyIcon并将其设置为
.visible=true
,一切正常


仍然保留了
RegisterWindowMessage
,以防用户以某种方式杀死windows资源管理器。

尝试过这种方法,但实际上这取决于系统的启动情况。请记住,如果程序是由windows资源管理器启动的,则这不是问题。仅当该程序作为Another程序的子程序启动时(讽刺的是,该程序是由windows资源管理器启动的)。。。开始菜单->启动