zoukankan      html  css  js  c++  java
  • Self install windows service in .NET c#

    http://stackoverflow.com/questions/4144019/self-install-windows-service-in-net-c-sharp

    using System;
    using System.Configuration.Install;
    using System.Reflection;
    using System.ServiceProcess;
    using System.IO;
    
    namespace ConsoleApplication1
    {
        class Program : ServiceBase
        {
            static void Main(string[] args)
            {
    
                AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
    
    
                if (System.Environment.UserInteractive)
                {
                    string parameter = string.Concat(args);
                    switch (parameter)
                    {
                        case "--install":
                            ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
                            break;
                        case "--uninstall":
                            ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
                            break;
                    }
                }
                else
                {
                    ServiceBase.Run(new Program());
                }
    
    
    
            }
    
            private static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
            {
                File.AppendAllText(@"C:Temperror.txt", ((Exception)e.ExceptionObject).Message + ((Exception)e.ExceptionObject).InnerException.Message);
            }
    
            public Program()
            {
                this.ServiceName = "My Service";
                File.AppendAllText(@"C:Tempsss.txt", "aaa");
    
            }
    
            protected override void OnStart(string[] args)
            {
                base.OnStart(args);
    
                File.AppendAllText(@"C:Tempsss.txt", "bbb");
            }
    
            protected override void OnStop()
            {
                base.OnStop();
    
                File.AppendAllText(@"C:Tempsss.txt", "ccc");
            }
        }
    }


     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Configuration.Install;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        [RunInstaller(true)]
        public class MyWindowsServiceInstaller : Installer
        {
            public MyWindowsServiceInstaller()
            {
                var processInstaller = new ServiceProcessInstaller();
                var serviceInstaller = new ServiceInstaller();
    
                //set the privileges
                processInstaller.Account = ServiceAccount.LocalSystem;
    
                serviceInstaller.DisplayName = "My Service";
                serviceInstaller.StartType = ServiceStartMode.Automatic;
    
                //must be the same as what was set in Program's constructor
                serviceInstaller.ServiceName = "My Service";
                this.Installers.Add(processInstaller);
                this.Installers.Add(serviceInstaller);
            }
        }
    }


     

  • 相关阅读:
    HTML5 五大特性
    JS DATE对象详解
    MySQL复制错误 The slave I/O thread stopsbecause master and slave have equal MySQL server UUIDs; these UUIDs must bedifferent for replication to work 解析
    MySQL OSC(在线更改表结构)原理
    Mycat基本搭建
    MySQL MVCC原理
    MySQL索引
    MySQL5.7新特性
    mysql报错"ERROR 1206 (HY000): The total number of locks exceeds the lock table size"的解决方法
    监控Mongo慢查询
  • 原文地址:https://www.cnblogs.com/sui84/p/6777054.html
Copyright © 2011-2022 走看看