1

我创建了一个应用程序,其唯一的 UI 是 Windows 任务栏图标。当应用程序直接启动时(例如在 Windows 资源管理器中双击它),它会正确显示任务栏图标。我需要确保这个应用程序一直在运行。为此,我在 C# 中创建了一个 Windows 服务,它每 10 秒检查一次应用程序是否仍在运行,如果没有,它将通过调用重新启动它

System.Diagnostics.Process.Start("MyApp.exe");

正如我从任务管理器中看到的那样,该过程已启动。但是,我找不到任务栏图标。我注意到的一件事是,当它从窗口服务启动时,它以系统用户名运行。

从 Windows 服务启动时,如何使任务栏图标可见?

4

1 回答 1

1

服务无法访问与 Vista 或 Win7 上的用户相同的桌面。默认情况下,由其他进程启动的应用程序与启动它们的应用程序具有相同的权限(它们在同一帐户下运行)。您需要让您的服务在用户帐户下运行,或者使用ImpersonateLoggedOnUser(不确定此功能的 .NET 版本是什么 - 希望您能够以此为起点找到它)。

于 2011-03-20T05:06:48.130 回答