Вопрос по c# – Автоматический запуск службы Windows при установке

111

У меня есть служба Windows, которую я устанавливаю с помощью InstallUtil.exe. Несмотря на то, что я установил метод запуска на автоматический, служба не запускается при установке, я должен вручную открыть службы и нажать кнопку запуска. Есть ли способ запустить его либо через командную строку, либо через код Сервиса?

Ваш Ответ

11   ответов
6

Как насчет следующих команд?

net start "<service name>"
net stop "<service name>"
Error: User Rate Limit Exceeded
0

0

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded mickyjtwin
1

this.serviceInstaller.ServiceName

private void serviceInstaller_AfterInstall(object sender, InstallEventArgs e) {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = "/C sc start " + this.serviceInstaller.ServiceName;

        Process process = new Process();
        process.StartInfo = startInfo;
        process.Start();
    }
0

2

ServiceController начать свой сервис с кода.

Update:Error: User Rate Limit ExceededСервисный контроллерError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
27

ndows с автоматическим запуском:

using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;

namespace Example.of.name.space
{
[RunInstaller(true)]
public partial class ServiceInstaller : Installer
{
    private readonly ServiceProcessInstaller processInstaller;
    private readonly System.ServiceProcess.ServiceInstaller serviceInstaller;

    public ServiceInstaller()
    {
        InitializeComponent();
        processInstaller = new ServiceProcessInstaller();
        serviceInstaller = new System.ServiceProcess.ServiceInstaller();

        // Service will run under system account
        processInstaller.Account = ServiceAccount.LocalSystem;

        // Service will have Start Type of Manual
        serviceInstaller.StartType = ServiceStartMode.Automatic;

        serviceInstaller.ServiceName = "Windows Automatic Start Service";

        Installers.Add(serviceInstaller);
        Installers.Add(processInstaller);
        serviceInstaller.AfterInstall += ServiceInstaller_AfterInstall;            
    }
    private void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
    {
        ServiceController sc = new ServiceController("Windows Automatic Start Service");
        sc.Start();
    }
}
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
4

Native code can used, "Starting a Service". Maximum control with minimum dependencies but the most work. WMI: Win32_Service has a StartService method. This is good for cases where you need to be able to perform other processing (e.g. to select which service). PowerShell: execute Start-Service via RunspaceInvoke or by creating your own Runspace and using its CreatePipeline method to execute. This is good for cases where you need to be able to perform other processing (e.g. to select which service) with a much easier coding model than WMI, but depends on PSH being installed. A .NET application can use ServiceController
4

Error: User Rate Limit Exceeded

net start *servicename*
199

l. Затем вы можете вызвать ServiceController в обработчике событий, чтобы запустить службу.

using System.ServiceProcess;

public ServiceInstaller()
{
    //... Installer code here
    this.AfterInstall += new InstallEventHandler(ServiceInstaller_AfterInstall);
}

void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
    using (ServiceController sc = new ServiceController(serviceInstaller.ServiceName))
    {
         sc.Start();
    }
}

Теперь, когда вы запустите InstallUtil на вашем установщике, он установит и запустит службу.

Error: User Rate Limit ExceededserviceInstallerError: User Rate Limit ExceededServiceInstallerError: User Rate Limit ExceededsenderError: User Rate Limit ExceededServiceInstaller()Error: User Rate Limit ExceededServiceInstaller serviceInstaller = (ServiceInstaller)sender;Error: User Rate Limit ExceededusingError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededServiceInstallerError: User Rate Limit ExceededSystem.Configuration.Install.InstallerError: User Rate Limit Exceededmsdn guideError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededServiceControllerError: User Rate Limit Exceeded
0

Похожие вопросы