转载 http://blog.csdn.net/vvhesj/article/details/8349615

1.1创建WindowsService项目

  导入需要的引用比如System.configuration、System.Web.Service(网站服务)、System.Windows.Forms(应用程序服务)、Newtonsoft.Json(json数据,这个很常用),按自己需要添加。

  添加app.config用于管理配置信息

2.1添加安装程序

  打开Service.cs右键点击,添加安装程序,会自动添加安装程序类,保存下就行了。

  Service.cs的属性需要设置下  1)ServiceName 服务器名,最好用英文。2)StartType设置Automatic自动启动就好了。Disable禁用没人会用吧。Manual手动。

  ProcessInstaller.cs的属性需要设置下  1)Account设置LocalSystem  本地系统就行了。

                        LocalService    充当本地计算机上非特权用户的帐户,该帐户将匿名凭据提供给所有远程服务器。

                        LocalSystem    服务控制管理员使用的帐户,它具有本地计算机上的许多权限并作为网络上的计算机。

                        NetworkService    提供广泛的本地特权的帐户,该帐户将计算机的凭据提供给所有远程服务器。
                        User    由网络上特定的用户定义的帐户。如果为 ServiceProcessInstaller.Account 成员指定 User,

                            则会使系统在安装服务时提示输入有效的用户名和密码,

                            除非您为 ServiceProcessInstaller 实例的 Username 和 Password 这两个属性设置值。

3.1编写代码

  Service.cs服务类写服务启动关闭定时运行的方法

  其他的按正常写代码一样添加类库,写需要的代码。

4.1安装服务

  去bin\debug下面找到service的EXE文件,复制到需要安装的地方,比如windows\System32之类的地方
  输入完整的debug目录下的InstallUtil.exe 空格 输入刚刚复制的service.exe的完整路径,回车进行安装

4.2安装服务

  通过新建项目window安装包进行封装,这个就不讲解了

  http://blog.csdn.net/dyzcode/article/details/6981547 可以看这里

4.3安装服务

  通过在ProcessInstaller.cs添加代码

  1. /// <summary>
  2. /// 安装服务
  3. /// </summary>
  4. /// <param name="stateSaver"></param>
  5. public override void Install(System.Collections.IDictionary stateSaver)
  6. {
  7. Microsoft.Win32.RegistryKey system,
  8. //HKEY_LOCAL_MACHINE\Services\CurrentControlSet
  9. currentControlSet,
  10. //...\Services
  11. services,
  12. //...\<Service Name>
  13. service,
  14. //...\Parameters - this is where you can put service-specific configuration
  15. config;
  16. try
  17. {
  18. //Let the project installer do its job
  19. base.Install(stateSaver);
  20. //Open the HKEY_LOCAL_MACHINE\SYSTEM key
  21. system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");
  22. //Open CurrentControlSet
  23. currentControlSet = system.OpenSubKey("CurrentControlSet");
  24. //Go to the services key
  25. services = currentControlSet.OpenSubKey("Services");
  26. //Open the key for your service, and allow writing
  27. service = services.OpenSubKey(conServiceName, true);
  28. //Add your service's description as a REG_SZ value named "Description"
  29. service.SetValue("Description", "<span style="font-family:KaiTi_GB2312;">描述语言</span>");
  30. //(Optional) Add some custom information your service will use...
  31. config = service.CreateSubKey("Parameters");
  32. }
  33. catch (Exception e)
  34. {
  35. Console.WriteLine("An exception was thrown during service installation:\n" + e.ToString());
  36. }
  37. }
  38. /// <summary>
  39. /// 卸载服务
  40. /// </summary>
  41. /// <param name="savedState"></param>
  42. public override void Uninstall(System.Collections.IDictionary savedState)
  43. {
  44. Microsoft.Win32.RegistryKey system,
  45. currentControlSet,
  46. services,
  47. service;
  48. try
  49. {
  50. //Drill down to the service key and open it with write permission
  51. system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");
  52. currentControlSet = system.OpenSubKey("CurrentControlSet");
  53. services = currentControlSet.OpenSubKey("Services");
  54. service = services.OpenSubKey(conServiceName, true);
  55. //Delete any keys you created during installation (or that your service created)
  56. service.DeleteSubKeyTree("Parameters");
  57. //...
  58. }
  59. catch (Exception e)
  60. {
  61. Console.WriteLine("Exception encountered while uninstalling service:\n" + e.ToString());
  62. }
  63. finally
  64. {
  65. //Let the project installer do its job
  66. base.Uninstall(savedState);
  67. }
  68. }

代码添加完成后

添加window service安装的批处理命令

1)在项目添加一个文本文件,更名为install.bat,编辑文件的内容如下:

@echo off
C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727\InstallUtil.exe -i "WindowsService1.exe"
@pause

2)在项目添加一个文本文件,更名为uninstall.bat,编辑文件的内容如下

@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u "WindowsService1.exe"
@pause
install.bat即完成安装。

C#系统服务安装的更多相关文章

  1. Windows 安装 MongoDB 服务

    第一步 以管理员权限打开命令提示符 按Windows+R键(Ctrl和Alt中间的那个,有微软Logo的键),输入cmd打开命令提示符 第二步 创建数据库目录. 使用mkdir命令,创建数据库的目录和 ...

  2. Windows Server 2008安装Memcached笔记

    分布式缓存系统Memcached简介与实践 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然 ...

  3. 从编译安装Keepalived 到 配置 负载均衡(LVS-DR)

    最近在研究服务器高可用集群 (HA)…… Keepalived 是用C写的软路由.提供负载均衡与高可用特性. 负载均衡利用IPVS技术 高可用通过VRRP协议实现 更难能的贵的是,一直到最近还在更新 ...

  4. saltstack自动化运维系列12配置管理安装redis-3.2.8

    一.准备redis自动化配置的文件(即安装一遍redis,然后获取相关文件和配置在salt中执行上线) 1.源码安装redis3.2.8并注册为系统服务 安装依赖yum install -y tcl ...

  5. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(四)

    MyEclipse超值折扣 限量 100 套! 立即开抢>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包的形 ...

  6. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(三)

    MyEclipse超值折扣 限量 100 套! 立即开抢>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包的形 ...

  7. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(二)

    你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包的 ...

  8. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(一)

    你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包的 ...

  9. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(七)

    [周年庆]MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包 ...

随机推荐

  1. 【BZOJ1801】【AHOI2009】中国象棋(动态规划)

    [BZOJ1801][AHOI2009]中国象棋(动态规划) 题面 题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个 ...

  2. 论文笔记(6):Weakly-and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation

    这篇文章的主要贡献点在于: 1.实验证明仅仅利用图像整体的弱标签很难训练出很好的分割模型: 2.可以利用bounding box来进行训练,并且得到了较好的结果,这样可以代替用pixel-level训 ...

  3. java设计模式-----14、桥接模式

    Bridge 模式又叫做桥接模式,是构造型的设计模式之一.Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任.它的主要特点是把抽象(abstraction ...

  4. Nginx实现集群的负载均衡配置过程详解

    Nginx 的负载均衡功能,其实实际上和 nginx 的代理是同一个功能,只是把代理一台机器改为多台机器而已. Nginx 的负载均衡和 lvs 相比,nginx属于更高级的应用层,不牵扯到 ip 和 ...

  5. Hadoop集群环境安装

    转载请标明出处:  http://blog.csdn.net/zwto1/article/details/45647643:  本文出自:[zhang_way的博客专栏] 工具: 虚拟机virtual ...

  6. 403 forbidden 错误解决方案

    在本机启动程序,访问手机移动端(wap)的程序时,返回404无法访问,控制台报错403 forbidden,网上找问题所在: [ 以下引用百度知道:https://zhidao.baidu.com/q ...

  7. Go语言学习1

    1.go标示符:非空字母或者数字串,第一个必须是字母,不能为关键字,可以是下划线. 2.go关键字: break,default,func,interface,select, case,defer,g ...

  8. nginx静态服务器配置

    1. nginx安装 在 Ubuntu 下,可以舍去编译安装的过程,直接 apt-get sudo apt-get install nginx sudo service nginx start 2. ...

  9. 《PHP 设计模式》翻译完毕

    翻译进度请见:https://laravel-china.org/docs/php-design-patterns/2018?mode=sections 设计模式不仅代表着更快开发健壮软件的有用方法, ...

  10. 生产者/消费者问题的多种Java实现方式

    实质上,很多后台服务程序并发控制的基本原理都可以归纳为生产者/消费者模式,而这是恰恰是在本科操作系统课堂上老师反复讲解,而我们却视而不见不以为然的.在博文<一种面向作业流(工作流)的轻量级可复用 ...