就能看到我们注册的服务了

时间:2022-05-04 03:14:26

1、文件-》新建-》项目-》windows桌面-》windows处事,改削你要的项目名称。我这不改名,仍叫WindowsService1,确定。

就能看到我们注册的服务了

2、此中的Program.cs文件是入口,Service1.cs是处事文件,所有的逻辑都在这。Service1.cs包罗两部分,一部分是Designer,可以在这里面添加各类组件。一部分是后台文件,里面可以写一些逻辑,默认包罗3个要领:结构函数、OnStart和OnStop,还可以添加OnPause和OnContinue要领。

3、改削Service1.cs文件如下(可以自行添加一些逻辑代码)

namespace WindowsService1 { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); base.ServiceName = "KangryTest"; //设置处事名称,与后面的安置处事名称要一致 } protected override void OnStart(string[] args) { //处事启动时相关代码。 } protected override void OnStop() { //处事*时相关代码。 } } }

4、双击Service1.cs文件,进入设计页面,对着空白处右键-》添加安置器。

就能看到我们注册的服务了

5、在安置器的设计界面,呈现两个组件。点击serviceProcessInstaller1,在右下角的属性栏中,将Account改削为LocalSystem

就能看到我们注册的服务了

6、选中ServiceInstaller1,右下角的属性框中,将ServiceName改削成第3步的ServiceName,其他自行选择。DelayedAutoStart暗示开机后是否延迟启动。Description暗示处事的描述,DisplayName暗示处事显示名称。ServicesDependedOn暗示依赖的处事项。StartType暗示启动类型,分为自动启动,手动启动和禁用。

就能看到我们注册的服务了

二、安置处事

选中项目右键选择“生成”,生成exe文件;

然后将从C:\Windows\Microsoft.NET\Framework\v4.0.30319中拷贝installutil.exe文件到生成目录(bin/Debug目的使installutil.exe和dp0WindowsService1.exe在同一级目录)下。在该目录新建“安置.bat”文件,使用记事本打开,输入如下命令:

%~dp0InstallUtil.exe %~dp0WindowsService1.exe
pause

注意前每个命令前要加一个%~dp0,暗示将目录变动为当前目录。倘若不加,可能会堕落。pause 必然要换行,否则报错。

最后双击安置.bat文件,就完成处事注册了。

在我的电脑上右键选择“打点”,打开“处事和应用措施”下的“处事”,就能看到我们注册的处事了。

就能看到我们注册的服务了

就能看到我们注册的服务了

三、卸载处事

在该目录新建“卸载.bat”文件,使用记事本打开,输入如下命令:

%~dp0InstallUtil /u %~dp0WindowsService1.exe

pause

同样pause也要换行。

如果在启动过程中遇到如下问题,请将整个项目加上EVERYONE权限。

就能看到我们注册的服务了

四、调试

在VS2013中选择“调试”-“附加到进程”,如下:

就能看到我们注册的服务了

就能看到我们注册的服务了

这样就可以调试了。

  VS2015+Windows处事简易教程

1、新建windows处事项目,我这里选择的是Framework4.0,没有选择高版本是为了防备在处事在一些低版本系统上无法正常运行。

就能看到我们注册的服务了

2、添加Windows处事的安置措施。

就能看到我们注册的服务了

在默认Service1设计器界面空白处点击右键->添加安置措施,系统会自动新建一个带有默认配置的安置措施类,如下图:

就能看到我们注册的服务了

新建完安置措施后,需要给默认的serviceInstaller1和serviceProcessInstaller1做一些根基的属性设置。如下图:

就能看到我们注册的服务了

就能看到我们注册的服务了

以上事情完成,安置措施配置完毕。

注意:如果不给处事添加安置措施,后面是没法把处事安置至windows系统里的。

3、添加应用措施配置文件(如果有需要的话)。

就能看到我们注册的服务了

如果项目有需要,一些应用措施的配置参数可以设置在此文件里(例如:数据库连接字符串)。

4、编写windows处事主代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

 

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.IO;

 

namespace OrganizClientSocketService

{

    public partial class Service1 : ServiceBase

    {

        public Service1()

        {

            InitializeComponent();

 

            System.Timers.Timer timer = new System.Timers.Timer();

            timer.Elapsed += new System.Timers.ElapsedEventHandler(TimedEvent);

            timer.Interval = 5000;//每5秒执行一次

            timer.Enabled = true;

        }

 

        //按时执行事件

        private void TimedEvent(object sender, System.Timers.ElapsedEventArgs e)

        {

            //业务逻辑代码

        }

 

        protected override void OnStart(string[] args)

        {

            this.WriteLog("搜才Organiz客户端数据同步处事:【处事启动】");

        }

 

        protected override void OnStop()

        {

            this.WriteLog("搜才Organiz客户端数据同步处事:【处事遏制】");

        }

        protected override void OnShutdown()

        {

            this.WriteLog("搜才Organiz客户端数据同步处事:【计算机*】");

        }

 

        #region 记录日志

        /// <summary>

        /// 记录日志

        /// </summary>

        /// <param></param>

        private void WriteLog(string msg)

        {

 

            //string path = @"C:\log.txt";

 

            //该日志文件会存在windows处事措施目录下

            string path = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt";

            FileInfo file = new FileInfo(path);

            if (!file.Exists)

            {

                FileStream fs;

                fs = File.Create(path);

                fs.Close();

            }

 

            using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))

            {

                using (StreamWriter sw = new StreamWriter(fs))

                {

                    sw.WriteLine(DateTime.Now.ToString() + "   " + msg);

                }

            }

        }

        #endregion

    }

}

 

5、编译生成,,安置windows处事至Windows系统。