转载-https://www.cnblogs.com/yubao/p/8443455.html

Create Windows Service project using Visual Studio

Create files on starting and stopping service:

   using System.IO;

   protected override void OnStart(string[] args)
{
File.Create(AppDomain.CurrentDomain.BaseDirectory + "OnStart.txt");
} protected override void OnStop()
{
File.Create(AppDomain.CurrentDomain.BaseDirectory + "OnStop.txt");
}

Try to run Windows Program on Debug mode

Click "Start" directly:

How to create a service use exe file

C:\Windows\system32>sc create -h
DESCRIPTION:
Creates a service entry in the registry and Service Database.
USAGE:
sc <server> create [service name] [binPath= ] <option1> <option2>... OPTIONS:
NOTE: The option name includes the equal sign.
A space is required between the equal sign and the value.
type= <own|share|interact|kernel|filesys|rec|userown|usershare>
(default = own)
start= <boot|system|auto|demand|disabled|delayed-auto>
(default = demand)
error= <normal|severe|critical|ignore>
(default = normal)
binPath= <BinaryPathName to the .exe file>
group= <LoadOrderGroup>
tag= <yes|no>
depend= <Dependencies(separated by / (forward slash))>
obj= <AccountName|ObjectName>
(default = LocalSystem)
DisplayName= <display name>
password= <password>

Start service use "sc create" command

C:\Windows\system32>sc create MyService binpath="C:\Users\yubao\Documents\Visual Studio 2017\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe" start=auto
[SC] CreateService SUCCESS

Start service:

Delete Service use "sc delete" command:

C:\Windows\system32>sc delete MyService
[SC] DeleteService SUCCESS

Install Service on Windows

Install Service to Windows use InstallUtil.exe:

Where InstallUtil.exe is:

for win32: C:\Windows\Microsoft.NET\Framework\v4.0.30319

for win64: C:\Windows\Microsoft.NET\Framework64\v4.0.30319

Install Service:

C:\Windows\system32>InstallUtil.exe C:\Users\yubao\Documents\Visual Studio 2017\Projects\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe

Uninstall Service:

C:\Windows\system32>InstallUtil.exe /u  "C:\Users\yubao\Documents\Visual Studio 2017\Projects\WindowsService1\WindowsService1\bin\x64\Release\WindowsService1.exe"

Use Setup Project to Install windows service

Build Setup Project to generate Installer files:

Double click "Setup.exe/msi" to start installation. And then you will see this typicall error for x64 target platform: ( for win32, you will never see this error)

How to solve E1001 under x64 target system:

Download orca.exe from ORCA MSI Editor Standalone Download

Orca MSI Editor allows you to edit the properties of any MSI file. With this tool, you can change the title and text within the installer an look at how and where the files are delivered. It’s also handy if you need to “hack” an MSI to work with a newer version of Windows.

Edit .msi file with "orca.exe " tool:

modify binary path to  "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtilLib.dll"

Final install path:

How to Debug Windows Service program on Visual Studio:

Service1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.IO; namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
} public void OnDebug()
{
string[] str = { "0" };
OnStart(str);
} protected override void OnStart(string[] args)
{
File.Create(AppDomain.CurrentDomain.BaseDirectory + "OnStart.txt");
} protected override void OnStop()
{
File.Create(AppDomain.CurrentDomain.BaseDirectory + "OnStop.txt");
} }
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks; namespace WindowsService1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
#if DEBUG
Console.WriteLine("This is debug mode");
Service1 myService = new Service1();
myService.OnDebug();
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
#endif }
}
}

How to make service auto start after installation:

ProjectInstaller.cs


using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;


using System.ServiceProcess;
using System.Threading.Tasks;


namespace WindowsService1
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}


private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
new ServiceController(serviceInstaller1.ServiceName).Start();
}
}
}

 

使用C#编程语言开发Windows Service服务的更多相关文章

  1. 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……

    过场CG:   接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为[定时任务]的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案: 方案一:使用务定 ...

  2. .NET开发Windows Service程序 - Topshelf

    在实际项目开发过程中,会经常写一些类似定时检查,应用监控的应用.这类应用在windows平台通常都会写成window service程序. 在百度上搜索一下'c#开发windows service', ...

  3. C# Windows Service服务的创建和调试

    前言 关于Windows服务创建和调试的文章在网络上的很多文章里面都有,直接拿过来贴在这里也不过仅仅是个记录,不会让人加深印象.所以本着能够更深刻了解服务项目的创建和调试过程及方法的目的,有了这篇记录 ...

  4. quartz.net结合Topshelf实现windows service服务托管的作业调度框架

    topshelf可以很简单方便的实现windows service服务,详见我的一篇博客的介绍 http://www.cnblogs.com/xiaopotian/articles/5428361.h ...

  5. .Net Windows Service(服务) 调试安装及System.Timers.Timer 使用

    Windows Service(服务)  是运行在后台的进程 1.VS建立 Windows 服务(.NET Framework) 2.添加Timer 双击Service1.cs可以拖控件(System ...

  6. ubuntu下安装 gSOAP 用于C/C++开发web service服务端与客户端

    昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考. 首先下载gsoap,我下载的是gsoap-2.8.1. ...

  7. Windows Service 服务搭配FluentScheduler实现定时任务调度

    Windows Service 服务 创建Windows Service 项目 创建一个Windows Service项目,并将项目名称改为 TaskWindowService 在解决方案资源管理器内 ...

  8. 使用CXF开发Web Service服务

    1.使用CXF开发Web Service服务端 1.1 开发一个Web Service业务接口,该接口要用@WebService修饰 (1)创建一个Java项目MyServer (2)在MyServe ...

  9. [开发笔记]-Windows Service服务相关注意事项

    注意一:报错:“本地计算机上的 *** 服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止.” 该问题主要的原因是 Service服务程序中有错误. 遇到这个问题时,无论是重新安装服务,还是 ...

随机推荐

  1. Java语言学习day28--8月03日

    ###10接口作为方法参数与返回值 * A:  接口作为方法参数 接口作为方法参数的情况是很常见的,经常会碰到.当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象.如下代码演示. //接 ...

  2. Java之IO流技术详解

    何为IO? 首先,我们看看百度给出的解释. I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分. i是写入,Input的首字母.o是输出,Output的首字母. IO 也称为 ...

  3. Day 005:PAT练习--1047. 编程团体赛(20)

    编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜.现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正整 ...

  4. .Net IDE智能提示汉化(.Net6、AspNetCore)

    .Net IDE智能提示汉化(.Net6.AspNetCore) 先上现成的.net6汉化文件,可以手动下载后参照 如何为 .NET 安装本地化的 IntelliSense 文件 进行安装.或者使用后 ...

  5. Oauth的学习以及开发自助上课签到脚本

    附上源码:                                 https://github.com/taka250/auto_checkin_skl_hdu 首先了解学习oauth的知识 ...

  6. 借助ADB冻结与卸载Android系统应用(免ROOT)

    背景: 我妈的手机饱受系统应用广告推送之苦,每天都能在通知栏里收到好几条广告.为了给她个清净,本篇博文应运而生. 目标: 卸载安卓系统应用 所用工具: 硬件:我妈的手机(魅蓝5) PC端:Minima ...

  7. PHP 运行 mkdir() Permission Denied 的原因

    使用lamp,在上传文件时,PHP执行 mkdir($path) ,  出现没有权限的错误. 解决: 本次使用的时yii框架,所以首先确保 是apache的用户对web目录有权限,然后再给此用户加 r ...

  8. 论文解读(GMT)《Accurate Learning of Graph Representations with Graph Multiset Pooling》

    论文信息 论文标题:Accurate Learning of Graph Representations with Graph Multiset Pooling论文作者:Jinheon Baek, M ...

  9. Linux学习教程 | 全文目录

    本教程最大的特点是通俗易懂,并且非常详细,花费 7 天时间即可快速了解 Linux. 第一章 Linux简介 1.1 操作系统是什么,操作系统概述 1.2 Linux是什么,有哪些特点? 1.3 Li ...

  10. SUSE系统---keepalived的搭建

    作为博客第一篇,先小尝初试一下搭建keepalived,因为项目需要搭建集群,为了满足需要,需要服务器对外暴露个虚拟IP,进行集群部署. 第一步:先把keepalived.tra.gz压缩包放到相应目 ...