C#实现一个用于开机启动其他程序的Windows服务(2009-07-01)
来源:互联网 发布:dnf钓鱼网站源码 编辑:程序博客网 时间:2024/06/07 15:05
今天决定写写博客,不为别的,只当自己的积累,如果与此同时能不误导他人甚至给了朋友们一些启发,那真是更好了!
程序的目的和用途:
很多开机启动程序仅仅加在启动项里面,只有登陆后才真正启动。windows服务在开机未进行用户登录前就启动了。正是利用这一点,解决一些服务器自动重启后特定软件也自动启动的问题。
1.新建一个服务项目 visual C#----windows----windows服务;
2.添加一个dataset(.xsd),用于存储启动目标的路径,日志路径等。
在dataset可视化编辑中,添加一个datatable,包含两列 StartAppPath 和 LogFilePath。分别用于存储目标的路径、日志路径。
*我认为利用dataset.xsd存储配置参数的优势在于可以忽略xml解析的具体过程直接使用xml文件。
在dataset中 提供了ReadXml方法用于读取xml文件并将其转换成内存中的一张datatable表,数据很容易取出来!同样,WriteXml方法用于存储为xml格式的文件,也仅仅需要一句话而已。
3. program.cs文件 作为程序入口,代码如下:
4.service.cs主文件,代码如下:
5.启动调试,成功时也会弹出一个对话框大致意思是提示服务需要安装。
6.把Debug文件夹下面的.exe执行程序,安装为windows系统服务,安装方法网上很多介绍。我说一种常用的:
安装服务
访问项目中的已编译可执行文件所在的目录。
用项目的输出作为参数,从命令行运行 InstallUtil.exe。在命令行中输入下列代码:
installutil yourproject.exe
卸载服务
用项目的输出作为参数,从命令行运行 InstallUtil.exe。
installutil /u yourproject.exe
至此,整个服务已经编写,编译,安装完成,你可以在控制面板的管理工具的服务中,看到你编写的服务。
7.安装好了之后在系统服务列表中可以管理服务,这时要注意将服务的属性窗口----登陆----“允许于桌面交互”勾选!这样才能在启动了你要的目标程序后不单单存留于进程。在桌面上也看得到。
8.关于卸载服务,目前有两个概念:一是禁用而已;一是完全删除服务。 前者可以通过服务管理窗口直接完成。后者则需要进入注册表“HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services”找到服务名称的文件夹,整个删掉,重新启动电脑后,服务消失。
9.扩展思考:经过修改代码,还可以实现:启动目标程序之前,检测进程中是否存在目标程序,存在则不再次启动。
- C#实现一个用于开机启动其他程序的Windows服务(2009-07-01)
- C#实现一个用于开机启动其他程序的Windows服务
- 让你写的c#程序一开机就自动运行 Windows服务实现开机启动
- C# 实现程序的开机启动
- C#实现程序开机启动的方法
- 一个用于启动/停止特定服务的托盘程序——VS2008实现
- C#实现程序开机启动
- 一个简单的C# WINDOWS服务程序
- 一个被常忽视的windows开机启动加载程序
- 开机启动和其他服务的自动启动方式。
- Windows中实现不依赖账户登录的开机启动程序
- Windows中实现不依赖账户登录的开机启动程序
- 实现程序的开机启动
- c#开机自动启动程序实现代码
- c#开机自动启动程序实现代码
- c#开机自动启动程序实现代码
- C#中实现程序开机自启动
- C#中实现程序开机自启动
- java基于UDP的socket通信
- linux 的任务堆栈,以及用户态和内核态的切换
- 对象数组 Object[]
- linux Mplayer安装全过程(x386)(转)
- jsp重复提交问题
- C#实现一个用于开机启动其他程序的Windows服务(2009-07-01)
- java基于TCP的socket编程简单实现[代码实践过]
- 2009应用基础设施/中间件发展趋势
- ORA-12514: TNS:listener does not currently know of service requested in connect
- 微软全球副总裁李开复给中国青年的一封信
- 用jsp直接导出内存中生成excel文件
- 锁定老贴子 主题:介绍CJDBC
- 创业中我学会了比上学和打工还珍贵的经验,虽然一直在碰撞
- SQL Server中临时表与表变量的区别