vista和win7在windows服务中交互桌面权限问题解决方法:穿透Sessi

2019-12-30 12:10:23于丽
服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分。我们可以把服务想像成一种特殊的应用程序,它随系统的“开启~关闭”而“开始~停止”其工作内容,在这期间无需任何用户参与  

Windows 服务在后台执行着各种各样任务,支持着我们日常的桌面操作。有时候可能需要服务与用户进行信息或界面交互操作,这种方式在XP 时代是没有问题的,但自从Vista 开始你会发现这种方式似乎已不起作用。

Session 0 隔离实验

下面来做一个名叫AlertService 的服务,它的作用就是向用户发出一个提示对话框,我们看看这个服务在Windows 7 中会发生什么情况。


using System.ServiceProcess;
using System.Windows.Forms;

namespace AlertService
{
 public partial class Service1 : ServiceBase
 {
  public Service1()
  {
   InitializeComponent();
  }

  protected override void OnStart(string[] args)
  {
   MessageBox.Show("A message from AlertService.");
  }

  protected override void OnStop()
  {
  }
 }
}

程序编译后通过Installutil 将其加载到系统服务中:

vista,win7,桌面权限,Session

在服务属性中勾选“Allow service to interact with desktop” ,这样可以使AlertService 与桌面用户进行交互。

vista,win7,桌面权限,Session

在服务管理器中将AlertService 服务“启动”,这时任务栏中会闪动一个图标:

vista,win7,桌面权限,Session