我创建了一个应用程序,其唯一的UI是Windows任务栏图标。当应用程序直接启动时(例如,在Windows资源管理器中双击它),它会正确显示任务栏图标。我需要确保这个应用程序始终运行。为此,我在C#中创建了一个Windows服务,如果应用程序仍在运行,则每10秒检查一次,如果没有,它将通过调用
重新启动它System.Diagnostics.Process.Start("MyApp.exe");
我可以从任务管理器中看到该过程。但是,我找不到任务栏图标。我注意到的一件事是它从Window Service启动时在系统用户名下运行。
如何从Windows服务启动时显示任务栏图标?
答案 0 :(得分:1)
服务无法访问与Vista或Win7上的用户相同的桌面。默认情况下,其他进程启动的应用程序与启动它们的应用程序具有相同的权限(它们在同一帐户下运行)。您需要在用户帐户下运行服务,或使用ImpersonateLoggedOnUser(不确定此功能的.NET版本是什么 - 希望您能够以此为起点找到它)。