论坛首页 编程语言技术论坛

windows services与桌面程序交互问题

浏览 1416 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-07-08  

windows services程序与桌面程序交互问题

 

kimmking

 

2009年7月8日20:52:28



今天有人问我的一个问题,分析了下。

 

有没有好的解决办法。就是因为NT Service不显示UI,我才让它调用exe,可调用的exe也不显示UI 。serviceInstaller 或者 serviceProcessInstaller 中设置吗? 没有找到相关属性。
windows 服务就是注册表里的 SYSTEM\CurrentControlSet\Services\下的一个项。添加 删除 修改 服务其实都仅仅是改注册表。
这个是windows服务的本质
题外话:懂了这个,其实创建一个服务不需要ServiceProcessInstaller、ServiceInstaller之类的东西。


设置允许服务与桌面交互 ,这个在服务的登录页有选项。在注册表里是type值 | 256,就是第8位置1。
.net提供了这个属性。

http://msdn.microsoft.com/zh-cn/library/tfdtdw0e(VS.80).aspx
ServiceType.InteractiveProcess
不支持创建交互式服务。作为一种变通方法,可以创建非交互式服务,并创建与该服务进行通信(通过使用套接字或远程处理)的单独控制 GUI 应用程序。

还是不太爽,
要直接交互,改注册表。 

            RegistryKey rk = Registry.LocalMachine; 
            string key = @"SYSTEM\CurrentControlSet\Services\" + serviceName; 
            RegistryKey sub = rk.OpenSubKey(key, true); 
            int value = (int)sub.GetValue("Type"); 
            sub.SetValue("Type", value | 256); 

 

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics