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服务与调试服务的更多相关文章

  1. VS2013创建Windows服务 || VS2015+Windows服务简易教程

    转自:https://www.cnblogs.com/no27/p/4849123.htmlhttps://blog.csdn.net/ly416/article/details/78860522 V ...

  2. 跟我学Windows Azure 三 使用vs2013创建windows azure web site

    首先我们需要登陆我们的windows azure上,然后访问 https://manage.windowsazure.cn/publishsettings/index 他会让我们下载我们的订阅证书文件 ...

  3. VS2013创建Windows服务

    一.创建服务 1.文件->新建->项目->windows桌面->windows服务,修改你要的项目名称.我这不改名,仍叫WindowsService1,确定. 2.其中的Pro ...

  4. 使用.NET Core创建Windows服务(二) - 使用Topshelf方式

    原文:Creating Windows Services In .NET Core – Part 2 – The "Topshelf" Way 作者:Dotnet Core Tut ...

  5. C# 服务程序 - 调试服务

    前言:本篇文章环境是VS2015,win10.如果有任何的差别,请注意 1. 创建服务程序 1)用VC创建服务程序,叫做 MyTestWindowsService 创建完成之后,可以看到 2)添加安装 ...

  6. windows服务的创建、安装、调试全过程及引发的后续学习

    前几天做项目的时候需要用到window服务,研究一段时间,算是掌握了最基本的使用方法吧,现总结如下: 引言:在项目过程中碰到一个问题:需要不断的扫描一个大型数据库表,并获取dataset,以便做后续的 ...

  7. .net Windows服务程序和安装程序制作图解 及 VS 2010创建、安装、调试 windows服务(windows service)

    .net Windows服务程序和安装程序制作 最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作 ...

  8. windows服务的创建、安装和调试

    1.创建 windows服务 项目   文件 -> 新建项目 -> 已安装的模板 -> Visual C# -> windows ,在右侧窗口选择"windows 服 ...

  9. C# Windows服务的创建、安装、调试

    一.查看已有的Windows服务 选择菜单"开始"-〉"控制面板"-〉"管理工具"-〉"服务"来查看现有系统中的服务 二 ...

随机推荐

  1. git将本地仓库强制替换掉远程仓库

    $ git remote add origin <url> $ git push --force --set-upstream origin master

  2. AD采样的一个例子

    用122.88k时钟采样153.6k的信号

  3. 使用vbs给PPT(包括公式)去背景

    在 视图—>宏 内新建宏 '终极版 Sub ReColor() Dim sld As Slide Dim sh As Shape For Each sld In ActivePresentati ...

  4. DIV+CSS实战(三)

    一.说明 在上篇博客<DIV+CSS实战(二)>中,实现了头部以及Tab标签卡,下面开始实现内容区域,要实现的效果如下: 二.内容最外层的设计(边框) 给最外层加边框,并且设置高度随着里面 ...

  5. spring mvc 静态资源版本控制

    spring bean 文件中增加 <bean class="cn.zno.smse.common.context.VersionServletContext">< ...

  6. Windows10+Python3下安装NumPy+SciPy+Matplotlib

    Numpy.SciPy.MatplotLib是Python下从事科学计算必不可少的库.我在用其他的方法安装时出现各种问题,发现直接安装.whl包是最快且不报错的方法. 1.下载.whl包在下面的网站中 ...

  7. VMware Workstation 12 OpenGL ES版本支持情况与设置

    概述 开始学习Opengl时,发现VMware Workstation虚拟机无法运行Opengl ES2.0的程序.后来,经过查找最终得知,是因为VMware Workstation11及之前的版本对 ...

  8. hdu2571 命运 2016-09-11 16:54 53人阅读 评论(0) 收藏

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  9. web.xml文件中context-param、listener、filter、servlet的执行顺序

    首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> ...

  10. MVC4 项目开发日志(1)

    最近一直在定义一个功能全面,层次结构分明的框架.一边学习一边应用.