2

我目前有一个程序可以作为服务正确安装,但启动类型设置为“手动”。如何使此应用程序设置启动类型 = 自动?

static void Main(string[] args) {

        if (System.Environment.UserInteractive) {

            if (args.Length > 0) {
                switch (args[0]) {
                    case "/install": {
                        ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
                        break;
                    }
                    case "/uninstall": {
                        ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
                     break;
                 }
             }
         }
     } else {
         if (!Environment.UserInteractive) {
             // running as service
             using (var service = new DocLogicJMS())
                 ServiceBase.Run(service);
         } else {
             // running as console app
             Start(args);
             Console.WriteLine("Press any key to stop...");
             Console.ReadKey(true);
             Stop();
         }
     }
}

JMS 是:

namespace JMS {
partial class DocLogicJMS {
    /// <summary> 
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing) {
        if (disposing && (components != null)) {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    #region Component Designer generated code

    /// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent() {
        this.ServiceName = "DocLogic JMS";
    }

    #endregion
}

}

4

1 回答 1

0

似乎这个问题已经在这里得到了回答: How do I change a Windows Service's startup type in .NET (post-install)?

这似乎是最受好评的答案:

var svc = new ServiceController("ServiceNameGoesHere");  
ServiceHelper.ChangeStartMode(svc, ServiceStartMode.Automatic); 
于 2016-10-11T15:29:54.403 回答