转载:http://blog.csdn.net/anddy926/article/details/8464142

在客户端服务器项目实践中,作为服务端必须保持程序的24小时不间断运行,需要做一个监控,当监控到该程序已关闭时则重新启动下。

有两种方法可以实现这个功能:

第一是做windows服务,作为后台的系统服务监控程序的运行状态。

第二是编写另外一个程序作为监控程序,通过添加计划任务,将监控程序设置为开机启动。

网上讨论两者的区别很少,大概都是集中在监控程序有界面而windows服务没有界面,其实监控程序也是可以写成没有界面显示,只是后台运行,即只能在任务管理器里面看到进程。 自己总结了下,注册一个服务,也是调用本地的一个exe来实现的,只不过该EXE入口函数包装了windows服务的一些参数,或者说服务就是将本地的exe包装了一下。在启动服务的时候,其实际使用的还是exe程序的。两者的主要区别:
一、启动时间与启动域不同,windows服务在用户未登陆(即计算机账号设置了密码,需要输入密码才进入系统)时已开始启动,而自启动程序启动时间为登陆后。同样的,程序作用范围为一个该帐户下运行,而服务是一个work
station,你切换不同帐户该服务还是在运行中的。

三、windows服务可以设置运行时候参数,比如设置为无法关闭,而自启动程序在任务管理器中直接关闭是可以X掉的。

最后一点:
  一方面、自启动程序一般是GUI程序,能够跟桌面交互的。一个应用程序可以包括很多进程,不过一般应用程序也只是运行一个进程。可以设置自启动程序无界面,运行于后台,我感觉这样其实跟服务没有什么区别了。

另外一方面、一个服务其实就是运行在后台的进程,与桌面无交互。服务只能有一个进程,在服务上启动其他程序在桌面上也是不会出现界面的,要出现界面,必须在设置服务时候选择与界面交互(这个时候服务启动的其他程序出现界面了,该服务依然是没有界面)。

说了这么多,其实制作windows服务监控与直接编程另外一个程序作为自启动程序来监控其实没有差别。

补充:如果windows服务程序或者自启动程序因为异常自身退出了,这个时候两者表现有差别。windows服务程序可以通过设置异常后自动重启来保持一直监控,而自启动程序只能通过计划任务,重启或者编写另外的程序来启动了。

windows服务与自启动程序的区别(转载)的更多相关文章

  1. 如何把一个c语言程序做成windows服务开机自启动

    原文:如何把一个c语言程序做成windows服务开机自启动 目前写的程序是一个用c语言实现socket侦听的,那么如何把这个程序做成开机自启动呢? 我们是通过vs6.0,编译后生成了.exe文件,然后 ...

  2. vs 2010创建Windows服务定时timer程序

    vs 2010创建Windows服务定时timer程序: 版权声明:本文为搜集借鉴各类文章的原创文章,转载请注明出处:  http://www.cnblogs.com/2186009311CFF/p/ ...

  3. 制作Windows服务和安装程序(C#版)

    http://blog.sina.com.cn/s/blog_5f4ffa170100vt2b.html 1.创建服务项目: 打开VS 2005 编程环境,在C#中新建Windows服务程序 2.将安 ...

  4. 基于Windows服务的聊天程序(一)

    本文将演示怎么通过C#开发部署一个Windows服务,该服务提供各客户端的信息通讯,适用于局域网.采用TCP协议,单一服务器连接模式为一对多:多台服务器的情况下,当客户端连接数超过预设值时可自动进行负 ...

  5. (转)为C# Windows服务添加安装程序

    本文转载自:http://kamiff.iteye.com/blog/507129 最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻 ...

  6. 基于Windows服务的聊天程序

    本文将演示怎么通过C#开发部署一个Windows服务,该服务提供各客户端的信息通讯,适用于局域网.采用TCP协议,单一服务器连接模式为一对多:多台服务器的情况下,当客户端连接数超过预设值时可自动进行负 ...

  7. 为C# Windows服务添加安装程序

    最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈哈,扯远了,今天讲一下那个怎么给Windows服务做个安 ...

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

    在网上看到一个修改程序入口的程序去把windows 服务修改成控制台的程序,然后利用控制台的程序把服务安装和管理,也想起自己原来也写了一个对windows 报务管理的程序,不过是winform的.   ...

  9. 将Nginx封装为Windows服务并自启动

    需要借助"Windows Service Wrapper"小工具,项目地址: https://github.com/kohsuke/winsw 下载地址:  http://repo ...

随机推荐

  1. MySQL升级方法一

    1.在目标服务器上安装新版本的mysql数据库. 1)解压缩新版mysql数据库压缩包并cp到指定目录: [root@faspdev mnt]# tar -zxvf mysql-5.6.24-linu ...

  2. HTML 标签大全及属性

    基本结构标签: <HTML>,表示该文件为HTML文件 <HEAD>,包含文件的标题,使用的脚本,样式定义等 <TITLE>---</TITLE>,包含 ...

  3. Area---poj1265(皮克定理+多边形求面积)

    题目链接:http://poj.org/problem?id=1265 题意是:有一个机器人在矩形网格中行走,起始点是(0,0),每次移动(dx,dy)的偏移量,已知,机器人走的图形是一个多边形,求这 ...

  4. 十天精通CSS3(12)

    自由缩放属性resize 为了增强用户体验,CSS3增加了很多新的属性,其中resize就是一个重要的属性,它允许用户通过拖动的方式来修改元素的尺寸来改变元素的大小.到目前为止,可以使用overflo ...

  5. Kylin安装部署

    一.安装准备 1.操作系统 Centos 7.x 2.时间问题 集群内所有节点时间一定要同步. NTP.Chrony 3.用户 创建hadoop组和hadoop用户,并做ssh免密码登录 4.Hado ...

  6. 3.keras实现-->高级的深度学习最佳实践

    一.不用Sequential模型的解决方案:keras函数式API 1.多输入模型 简单的问答模型 输入:问题 + 文本片段 输出:回答(一个词) from keras.models import M ...

  7. python 全局变量与局部变量

    一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if ...

  8. dialog提交表单

    <div id="dialog" title="添加客户"> <!--表单提交--> <form id="dialogF ...

  9. linux系统安装 dig和nslookup命令

    Fedora / Centos:1.yum install bind-utils Ubuntu: 1.sudo apt-get install dnsutils Debian: 1.2 apt-get ...

  10. #C++初学记录(算法考试1)

    B - Maximal Continuous Rest Each day in Berland consists of n hours. Polycarp likes time management. ...