Как устранить ошибку 1001 при установке службы Windows

#c# #.net #windows-services #setup-project

#c# #.net #windows-services #установка-проект

Вопрос:

При установке службы Windows я получаю следующую ошибку.

Ошибка 1001 . На этапе фиксации установки произошло исключение. Это исключение будет проигнорировано, и установка будет продолжена. Однако приложение может работать некорректно после завершения установки -> Не удается запустить службу ACSERVICE2 на компьютере’.’.-> Служба не ответила на запрос запуска или управления своевременно.

Любая помощь приветствуется…

Код :

     protected override void OnStart(string[] args)
    {
        try
        {
            AC_Main objMain = new AC_Main();
            td=new Thread(new ThreadStart(objMain.Main));
            td.IsBackground = true;
            td.Start();
            eLog.WriteEntry("Service Started at :"   System.DateTime.Now.ToString());
        }
        catch(System.Security.SecurityException exc)
        {

        }
    }


 protected override void OnStop()
        {
            td.Abort();
            eLog.WriteEntry("Service Stopped at :"   System.DateTime.Now.ToString());
        }
  

Зафиксированный метод :

 private void ProjectInstaller_Committed(object sender, InstallEventArgs e)
    {
        serviceController.ServiceName = "ACSERVICE2";
        ConnectionOptions coOptions = new ConnectionOptions();

        coOptions.Impersonation = ImpersonationLevel.Impersonate;

        ManagementScope mgmtScope = new System.Management.ManagementScope(@"rootCIMV2", coOptions);

        mgmtScope.Connect();

        ManagementObject wmiService;

        wmiService = new ManagementObject("Win32_Service.Name='"   this.serviceController.ServiceName   "'");

        ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");

        InParam["DesktopInteract"] = true;

        ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);

        this.serviceController.Start();

    }
  

Ответ №1:

Вы никогда не должны перехватывать ошибку, а затем игнорировать ее.

Это может быть вашей проблемой. Что произойдет, если вы добавите некоторые записи в блок catch, что-то вроде этого?

 catch(System.Security.SecurityException exc)
{
    eLog.WriteEntry("SecurityException: "   exc.Message);
}
  

Комментарии:

1. Уважаемый пользователь, спасибо за ваш ответ, но я тоже пробовал так: catch(System. Безопасность. Исключение SecurityException exc) { MessageBox. Показать(«OnStart :» exc.toString()); }

2. Я не думаю, что MessageBox будет работать в службе Windows. Вызов MessageBox. Show(), вероятно, вызывает другую ошибку. Вам необходимо записать исходную ошибку в текстовый файл или журнал событий Windows или что-то в этом роде.

3. @MubbasherKhaliq в службе, если вы хотите что-то записать на экран, это невозможно, однако вы можете записать это в текстовый файл или запись в журнале Windows, что довольно легко сделать, и это даст вам лучшую отправную точку, чтобы выяснить, что пошло не так в службе.

Ответ №2:

Да, это происходит, если вы неправильно удалили службу, которую пытаетесь установить снова. У меня была такая же проблема несколько дней назад. Я создал новый проект, скопировал тот же код и снова установил службу с нуля. Моя проблема заключалась в том, что