windows服务和桌面交互(转载)

windows 服务默认位于windows 7 的session 0 中,桌面程序位于session 1中,默认情况下二者无法交互

使用如下方法可以使在服务安装完成之后默认勾选“属性”->“登录”->“允许服务与桌面交互。

 1         private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
 2         {
 3
 4             SetServiceDesktopInsteract("你的服务名称");
 5             System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController();
 6             sc.ServiceName = "你的服务名称";
 7             sc.Start();
 8         }
 9
10         private void SetServiceDesktopInsteract(string serviceName)
11         {
12             System.Management.ManagementObject wmiService = new System.Management.ManagementObject(string.Format("Win32_Service.Name=‘{0}‘", serviceName));
13             System.Management.ManagementBaseObject changeMethod = wmiService.GetMethodParameters("Change");
14             changeMethod["DesktopInteract"] = true;
15             System.Management.ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", changeMethod, null);
16         }

查看代码

仅作备忘

windows服务和桌面交互(转载)

时间: 2024-10-13 17:11:40

windows服务和桌面交互(转载)的相关文章

[转]Windows服务“允许服务与桌面交互”的使用和修改方法

上一篇文章是纯 C# 代码的形式勾上 “允许服务与桌面交互” 选项的 本文转载自:http://blog.csdn.net/lanruoshui/article/details/4756408 描述:在自己写的一个系统服务程序,需要经常用到“允许与桌面进行交互”的设置,网上很多使用修改注册表的形式实现,我测试过,修改注册表后,选中的勾是选上了,但不能弹出应用程序:据说重启电脑后可以,但我不想重启,实际应用也不允许重启,故没有测试重启是否可行的情况.如图: 例如: 当我需要运行服务程序的时候,弹出

设置c#windows服务描述及允许服务与桌面交互的几种方法(作者博客还有一大堆C#创建服务的文章)

方法一: 在ProjectInstaller.cs重写 install() ,Uninstall()方法 public override void Install(IDictionary stateServer)  {   Microsoft.Win32.RegistryKey system,    //HKEY_LOCAL_MACHINE/Services/CurrentControlSet    currentControlSet,    //.../Services    services

C# 编写Windows服务并设置为“允许服务与桌面交互”

本文信息来源于网络,本人只是汇总. VS创建项目,项目类型选择Window服务 为服务创建安装程序 1.. 返回到 Service1 的"设计"视图. 2.. 单击设计器的背景以选择服务本身,而不是它的任何内容. 3.. 在"属性"窗口中,单击属性列表下面灰色区域中的"添加安装程序"链接. 默认情况下,向您的项目添加包含两个安装程序的组件类.将该组件命名为 ProjectInstaller,它包含的安装程序分别是服务的安装程序和服务关联进程的安装

第十三篇 一个安装、管理windows服务的桌面程序

在网上看到一个修改程序入口的程序去把windows 服务修改成控制台的程序,然后利用控制台的程序把服务安装和管理,也想起自己原来也写了一个对windows 报务管理的程序,不过是winform的. 界面如下(自己使用,界面比较丑陋): 首先需要添加一个帮助类: 代码如下: class Windows { /// <summary> /// 检查服务存在的存在性 /// </summary> /// <param name=" NameService "&g

有关windows服务的问题(转载自http://www.itjie.wang/)

我写的一个控制台程序,能正常执行,但是把它写成windows服务后却不正常了,有一步是循环等待读取CreateFileMapping 和MapViewOfFile共享的内存,没写入服务前是正常的. 可写入服务之后不管有没有向内存中写入数据,都显示无法打开那个内存,即在OpenFileMapping时就是失败的... 然后就一直循环等待,而且这个服务还无法正常停止,错误1053,是不是跟这个也有关系,代码有点多先看看有没有了解这种情况的,不行的话再贴代码. 文章来源:IT界 http://www.

C# 通过服务启动窗体(把窗体添加到服务里)实现用户交互的windows服务[转发]

由于个人需要,想找一个键盘记录的程序,从网上下载了很多,多数都是需要注册的,另外也多被杀软查杀.于是决定自己写一个,如果作为一个windows应用程序,可以实现抓取键盘的记录.想要实现随系统启动的话,其中一种方法就是要作为windows服务,把代码直接写到服务里边并不能抓取到键盘的记录,从网上翻阅资料及查看msdn才知道: Windows 服务应用程序在不同于登录用户的交互区域的窗口区域中运行.窗口区域是包含剪贴板.一组全局原子和一组桌面对象的安全对象.由于 Windows 服务的区域不是交互区

Windows 服务程序、窗口界面、桌面交互、与远程桌面

昨天用c写了一个windows服务(服务内部带一个gui窗口+系统托盘),在windows xp sp3上测试,启动服务后,系统托盘显示正常. 但在另一台windows 2003 sp2 上测试(通过远程桌面登录),晕了,服务是启动了(在进程管理器中能看到),但系统托盘看不到,也就是在桌面的右下角看不到系统托盘的图标. 到网上找原因,找到这么几篇: http://blog.s135.com/windows_mstsc/ http://chenjava.blog.51cto.com/374566/

(转)创建Windows服务(Windows Services)N种方式总结

转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类

编写Windows服务疑问1:操作过程

Windows 服务开发平时不太受人关注,毕竟那是高大上的项目类型,平常需求也用不上,很多老掉牙的家伙也只知有WinForm,仍不知有WPF,更别说Windows 服务了,正如淘渊明所写的,“不知有汉,无论魏晋”. 通常,就算要让程序开机启动,多数也只考虑设置一个启动项,也很少去想到开发Windows服务.如果程序需要自动启动,并且希望在后台完成一些东东,其实使用Windows服务也不错的. 正因为用的人少,那么说的人更少了,使得不了解它,想学又找不到资料的人也多.没事,老周没什么资本,唯一值得