VS2013创建Windows服务与调试服务
1、创建Windows服务



说明:
a)Description 服务描述,直接显示到Windows服务列表中的描述;
b)DisplayName 服务显示名称,直接显示到Windows服务列表中的名称;
c)ServiceName 服务进程名称,安装与卸载服务时的唯一标识。

单击“serviceProcessInstaller1”,在其属性窗口中设置Account帐号方式,建议为LocalService(当然也可以Account属性改为 LocalSystem,这样,不论是以哪个用户登录的系统,服务总会启动)。
编写安装和卸载脚本,并将放在bin/debug或bin/Release文件夹下。
安装脚本
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0exe程序的名称.exe
Net Start 服务名称
sc config 服务名称 start= auto
pause
这里注意,在exe程序的名称前面有 %~dp0 这是代表当前位置
服务名称 对应 上面我们创建服务时ServerName的名称
卸载脚本
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u %~dp0exe程序的名称.exe
pause
同时还要注意一下,本人用的.NET4.0的版本,所以\Microsoft.NET\Framework\v4.0.30319\installutil.exe 这一段要根据你机器安装.NET的版本来定。
其实脚本主要是通过installutil.exe 来进行安装和卸载服务的,同时此处涉及的批处理命令不多。
2、调试windows服务
在项目中不用启动windows服务项目,而是直接附加进程来进行调试。


在可用进程中,查找到你刚才通过脚本安装的服务就可以了。
再发一个写入服务代码的Demo
public partial class MMSServer : ServiceBase
{
private Timer time = new Timer();
public MMSServer()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
#if DEBUG
if (!Debugger.IsAttached)
Debugger.Launch();
Debugger.Break();
#endif
WriteLog("服务启动,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
time.Elapsed += new ElapsedEventHandler(MethodEvent);
time.Interval = * ;
time.Start();
} protected override void OnPause()
{
#if DEBUG
if (!Debugger.IsAttached)
Debugger.Launch();
Debugger.Break();
#endif
WriteLog("服务暂停,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
base.OnPause();
}
protected override void OnContinue()
{
#if DEBUG
if (!Debugger.IsAttached)
Debugger.Launch();
Debugger.Break();
#endif
WriteLog("服务恢复,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
base.OnContinue();
} protected override void OnShutdown()
{
WriteLog("计算机关闭,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
base.OnShutdown();
} private void MethodEvent(object source, System.Timers.ElapsedEventArgs e)
{
time.Enabled = false;
string result = string.Empty;
try
{
//.........
result = "执行成功,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n";
}
catch (Exception ex)
{
result = "执行失败,原因:" + ex.Message + "\r\n";
}
finally
{
WriteLog(result);
time.Enabled = true;
}
}
protected override void OnStop()
{
#if DEBUG
if (!Debugger.IsAttached)
Debugger.Launch();
Debugger.Break();
#endif
WriteLog("服务停止,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
}
/// <summary>
/// 日志记录
/// </summary>
/// <param name="logInfo"></param>
private void WriteLog(string logInfo)
{
try
{
string logDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\Logs";
if (!Directory.Exists(logDirectory))
{
Directory.CreateDirectory(logDirectory);
}
string filePath = logDirectory + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
File.AppendAllText(filePath, logInfo);
}
catch
{ }
}
}
VS2013创建Windows服务与调试服务的更多相关文章
- VS2013创建Windows服务 || VS2015+Windows服务简易教程
转自:https://www.cnblogs.com/no27/p/4849123.htmlhttps://blog.csdn.net/ly416/article/details/78860522 V ...
- 跟我学Windows Azure 三 使用vs2013创建windows azure web site
首先我们需要登陆我们的windows azure上,然后访问 https://manage.windowsazure.cn/publishsettings/index 他会让我们下载我们的订阅证书文件 ...
- VS2013创建Windows服务
一.创建服务 1.文件->新建->项目->windows桌面->windows服务,修改你要的项目名称.我这不改名,仍叫WindowsService1,确定. 2.其中的Pro ...
- 使用.NET Core创建Windows服务(二) - 使用Topshelf方式
原文:Creating Windows Services In .NET Core – Part 2 – The "Topshelf" Way 作者:Dotnet Core Tut ...
- C# 服务程序 - 调试服务
前言:本篇文章环境是VS2015,win10.如果有任何的差别,请注意 1. 创建服务程序 1)用VC创建服务程序,叫做 MyTestWindowsService 创建完成之后,可以看到 2)添加安装 ...
- windows服务的创建、安装、调试全过程及引发的后续学习
前几天做项目的时候需要用到window服务,研究一段时间,算是掌握了最基本的使用方法吧,现总结如下: 引言:在项目过程中碰到一个问题:需要不断的扫描一个大型数据库表,并获取dataset,以便做后续的 ...
- .net Windows服务程序和安装程序制作图解 及 VS 2010创建、安装、调试 windows服务(windows service)
.net Windows服务程序和安装程序制作 最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作 ...
- windows服务的创建、安装和调试
1.创建 windows服务 项目 文件 -> 新建项目 -> 已安装的模板 -> Visual C# -> windows ,在右侧窗口选择"windows 服 ...
- C# Windows服务的创建、安装、调试
一.查看已有的Windows服务 选择菜单"开始"-〉"控制面板"-〉"管理工具"-〉"服务"来查看现有系统中的服务 二 ...
随机推荐
- git将本地仓库强制替换掉远程仓库
$ git remote add origin <url> $ git push --force --set-upstream origin master
- AD采样的一个例子
用122.88k时钟采样153.6k的信号
- 使用vbs给PPT(包括公式)去背景
在 视图—>宏 内新建宏 '终极版 Sub ReColor() Dim sld As Slide Dim sh As Shape For Each sld In ActivePresentati ...
- DIV+CSS实战(三)
一.说明 在上篇博客<DIV+CSS实战(二)>中,实现了头部以及Tab标签卡,下面开始实现内容区域,要实现的效果如下: 二.内容最外层的设计(边框) 给最外层加边框,并且设置高度随着里面 ...
- spring mvc 静态资源版本控制
spring bean 文件中增加 <bean class="cn.zno.smse.common.context.VersionServletContext">< ...
- Windows10+Python3下安装NumPy+SciPy+Matplotlib
Numpy.SciPy.MatplotLib是Python下从事科学计算必不可少的库.我在用其他的方法安装时出现各种问题,发现直接安装.whl包是最快且不报错的方法. 1.下载.whl包在下面的网站中 ...
- VMware Workstation 12 OpenGL ES版本支持情况与设置
概述 开始学习Opengl时,发现VMware Workstation虚拟机无法运行Opengl ES2.0的程序.后来,经过查找最终得知,是因为VMware Workstation11及之前的版本对 ...
- hdu2571 命运 2016-09-11 16:54 53人阅读 评论(0) 收藏
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- web.xml文件中context-param、listener、filter、servlet的执行顺序
首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> ...
- MVC4 项目开发日志(1)
最近一直在定义一个功能全面,层次结构分明的框架.一边学习一边应用.