如何使用Windows服务弹出应用程序c#

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Windows服务弹出应用程序c#相关的知识,希望对你有一定的参考价值。

我想使用Windows服务弹出一个应用程序。

现在我正在使用的代码是:

System.Diagnostics.Process.Start(@" ");

当我开始运行服务时,该代码不会弹出应用程序。

答案

你不能这样做。自Windows Vista以来,用户会话交互已被删除。该过程将在服务运行的会话中启动,根据定义,该会话不是桌面交互式。

你可以做的是运行无窗口控制台工具。


长话:在Vista之前,所有服务都在与第一个登录用户相同的会话中运行(“会话0”)。由于这是一个安全问题,因此在Vista中进行了更改,其中专用会话(“会话0”)从一开始就处于活动状态。第一个用户登录会话1,下一个用户登录会话2等。

由于这些会话的分离,不再可能创建桌面交互式服务 - 没有服务的桌面会话。

这也意味着您无法在会话0中显示消息框或运行桌面交互式工具 - 没有人可以看到它们。

另一答案

这是你正在使用的确切代码吗?

如果是这样,你实际上并没有给进程任何东西开始,只是一个空字符串。您需要将可执行文件的名称传递给它。

例如:

System.Diagnostics.Process.Start(@"C:WindowsSystem32
otepad.exe");

如果这不是确切的代码,请使用确切的代码修改问题。

以上是关于如何使用Windows服务弹出应用程序c#的主要内容,如果未能解决你的问题,请参考以下文章

如何在片段中获取rootview?

Android Navigation - 导航时弹出当前片段

如何使用事务回栈来弹出片段?

使用Android导航组件时如何从后台获取片段?

我该如何做模态对话框片段(代码在我关闭之前不会执行)

Android - 弹出两个或更多片段但不顶部