C#系统服务安装

时间:2021-11-20 03:26:00

1.1创建WindowsService项目

  导入需要的引用比如System.configuration、System.Web.Service(网站服务)、System.Windows.Forms(应用程序服务)、Newtonsoft.Json(json数据,这个很常用),按自己需要添加。

  添加app.config用于管理配置信息

2.1添加安装程序

  打开Service.cs右键点击,添加安装程序,会自动添加安装程序类,保存下就行了。

  Service.cs的属性需要设置下  1)ServiceName 服务器名,最好用英文。2)StartType设置Automatic自动启动就好了。Disable禁用没人会用吧。Manual手动。

  ProcessInstaller.cs的属性需要设置下  1)Account设置LocalSystem  本地系统就行了。

                        LocalService    充当本地计算机上非特权用户的帐户,该帐户将匿名凭据提供给所有远程服务器。

                        LocalSystem    服务控制管理员使用的帐户,它具有本地计算机上的许多权限并作为网络上的计算机。

                        NetworkService    提供广泛的本地特权的帐户,该帐户将计算机的凭据提供给所有远程服务器。
                        User    由网络上特定的用户定义的帐户。如果为 ServiceProcessInstaller.Account 成员指定 User,

                            则会使系统在安装服务时提示输入有效的用户名和密码,

                            除非您为 ServiceProcessInstaller 实例的 Username 和 Password 这两个属性设置值。

3.1编写代码

  Service.cs服务类写服务启动关闭定时运行的方法

  其他的按正常写代码一样添加类库,写需要的代码。

4.1安装服务

  去bin\debug下面找到service的EXE文件,复制到需要安装的地方,比如windows\System32之类的地方
  输入完整的debug目录下的InstallUtil.exe 空格 输入刚刚复制的service.exe的完整路径,回车进行安装

4.2安装服务

  通过新建项目window安装包进行封装,这个就不讲解了

   可以看这里

4.3安装服务

  通过在ProcessInstaller.cs添加代码

/// <summary>  

/// 安装服务  

/// </summary>  

/// <param name="stateSaver"></param>  

public override void Install(System.Collections.IDictionary stateSaver)  

{  

    Microsoft.Win32.RegistryKey system,  

        //HKEY_LOCAL_MACHINE\Services\CurrentControlSet  

        currentControlSet,  

        //...\Services  

        services,  

        //...\<Service Name>  

        service,  

        //...\Parameters - this is where you can put service-specific configuration  

        config;  

  

    try  

    {  

        //Let the project installer do its job  

        base.Install(stateSaver);  

  

        //Open the HKEY_LOCAL_MACHINE\SYSTEM key  

        system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");  

        //Open CurrentControlSet  

        currentControlSet = system.OpenSubKey("CurrentControlSet");  

        //Go to the services key  

        services = currentControlSet.OpenSubKey("Services");  

        //Open the key for your service, and allow writing  

        service = services.OpenSubKey(conServiceName, true);  

        //Add your service‘s description as a REG_SZ value named "Description"