C# 从windows服务运行管理任务

C# 从windows服务运行管理任务,c#,windows-services,C#,Windows Services,我有一个Windows服务,我必须从中运行进程。但是,该进程需要管理员权限才能运行。在Process Explorer中,我看到服务确实运行该流程,但该流程的UI没有显示出来 我错过了什么?如何纠正这种情况?如果您使用的是Windows Vista或7,则服务无法与Windows XP之类的桌面系统交互,也无法像普通Windows应用程序那样打开窗口。它们默认作为本地系统帐户运行,这是一个完全特权帐户。这些服务在一个单独的会话中运行,使用一个单独的桌面。将其视为在另一个远程桌面会话中运行的服务。

我有一个Windows服务,我必须从中运行进程。但是,该进程需要管理员权限才能运行。在Process Explorer中,我看到服务确实运行该流程,但该流程的UI没有显示出来


我错过了什么?如何纠正这种情况?

如果您使用的是Windows Vista或7,则服务无法与Windows XP之类的桌面系统交互,也无法像普通Windows应用程序那样打开窗口。它们默认作为本地系统帐户运行,这是一个完全特权帐户。

这些服务在一个单独的会话中运行,使用一个单独的桌面。将其视为在另一个远程桌面会话中运行的服务。从服务中启动的任何GUI都将显示在该隐藏会话中,该会话无法访问。

因此,即使我为我的windows服务授权Administrator Previilies,它也不会打开进程窗口?该进程已在process explorer中运行,只是它没有显示默认窗口。它将启动该进程,但您将在不同的环境中看到该窗口。您可以使用另一个windows应用程序进程为您打开该进程。服务可以使用管道或插座通知它。我想这就是为什么所有需要更新应用程序或其他应用程序启动的应用程序在通知区域中都有一个图标,这是启动程序的一部分。因此,我可以从windows服务运行另一个控制台exe,该控制台exe在运行时将运行桌面应用程序/No,很遗憾不是。来自服务的所有内容都将被困在服务会话中。你想解决的问题是什么?您正在启动什么样的程序?为什么要从服务启动它?不幸的是,我必须启动的应用程序是桌面应用程序,需要管理员权限,因为我正在该应用程序中设置本地服务器。此服务用于不断检查此桌面应用程序是否正在运行。如果不是,则运行应用程序。因此,我应该使用与非服务相同的逻辑构建控制台应用程序,而不是服务,然后从那里启动此应用程序。我将安排这个控制台应用程序在重启时运行,而不是在重启时运行服务。这是一个更好的主意,使用一个在登录时自动启动的应用程序。如果您使应用程序具有隐藏的GUI和托盘图标,那么对用户的干扰就会减少。