the important thing is not to stop questioning

导航

 

勾选允许服务与桌面交互

指服务是否在桌面上提供用户界面,当服务启动后不论是谁登录都能使用。只有作为 LocalSystem 帐户(由“此帐户”指定)运行时,该选项才能使用。
如果一个服务需要界面(比如跳出一个对话框),接受用户的输入,接收键盘鼠标消息等等,必须选中“允许服务与桌面交互”.

 

因为没有解决跨SESSION的问题,大致原理是这样的:
1、服务程序必须设置成可与桌面交互,看看MSDN中的创建服务选项,可以找到这一项,这是能显示窗口的前提,不需要使用CreateProcessAsUser。XP及之前的版本这样做就OK了,下面的步骤针对VISTA/WIN7。
2、服务程序位于SESSION 0,桌面程序位于SESSION 1-X,通常是1,远程桌面就是其它的数了。跨SESSION的进程之间的通信方式很少,除非用SOCKET或管道,窗口就别想了,显示到另一个SESSION的桌面是不可能的。记住这点。
3、服务进程要想在桌面显示窗口,必须克隆一份自身进程的副本出来,当然是以目标SESSION身份克隆,新进程副本就位于目标SESSION中了,这个时候在副本进程里显示窗口就行了。

https://msdn.microsoft.com/en-us/library/aa383840%28VS.85%29.aspx

 

posted on 2016-03-01 13:55  qook  阅读(1034)  评论(0编辑  收藏  举报