转载 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. 来谈谈JAVA面向对象 - 鲁班即将五杀,大乔送他回家??

    开发IDE为Eclipse或者MyEclipse. 首先,如果我们使用面向过程的思维来解决这个问题,就是第一步做什么,第二步做什么? 鲁班即将五杀,大乔送他回家 这个现象可以简单地拆分为两步,代码大概 ...

  2. app图标icon大全

    http://tool.58pic.com/tubiaobao/index.php?m=Index&a=ui&p=2 很有用,下载没用,直接右键吧.

  3. angular中label包含input点击事件的问题

    问题:当点击input时,input不能勾选,单label内的其他区域点击均可控制input勾选. 分析:点击input时,$event.target.tagName   //INPUT, 点击img ...

  4. PLSQL Developer连接远程数据库的配置

    去Oracle的安装目录找到:D:\oracle\NETWORK\ADMIN这个路径下面的tnsnames.ora文件 修改文件: 这个是本地的 ORCL = (DESCRIPTION = (ADDR ...

  5. MongoDB 搭建文件存储的方案

    用云的话,节省你开发成本,快速上线,数据比较安全.缺点是一旦用了他们的,形成习惯以后,数据想迁移就会比较麻烦,你会越来越依赖,而且规模上去以后价格并不低.早年自己做的话,你需要实现分布式文件系统,这个 ...

  6. js筛选

    1.filter():筛选函数 1>:筛选单个元素, object.filter("selector") 2>筛选多个元素: object.filter("s ...

  7. 使用python+Selenium对空调控制器进行循环发送控制命令

    今天一同事说想对空调控制器进行循环发送命令操作.经过了对控制流程的梳理,发现每次选择内机后进入控制页面设定温度都是在26度,想了想,如果要进行循环就得将设定温度重置为17度,然后每循环一次温度增加1度 ...

  8. centos6.5的开机自动部署出现unsupported hardware detected

    author:headsen chen date : 2017-12-01  14:52:50  . notice:created by  headsen chen,if you copy or tr ...

  9. Knowledge point

    静态网页的特点:以htm.html.sbtml.xml.js.css等为后缀扩展名. 1)程序在客户浏览器端解析,不需要读取数据库,性能和效率较高: 2)后端没有数据库支持,所以和用户的交互性差,功能 ...

  10. 1-1 struts2 基本配置 struts.xml配置文件详解

    详见http://www.cnblogs.com/dooor/p/5323716.html 一. struts2工作原理(网友总结,千遍一律) 1 客户端初始化一个指向Servlet容器(例如Tomc ...