2012-05-03 2 views
15

Я создал сервис окна, и для его установки я создал свой проект развертывания и установил его. После установки я уставился на нее. Он успешно начался.ошибка при установке оконного сервиса System.Security.SecurityException

На следующий день я внесла некоторые изменения и переустановил и переустановил, но теперь его не установили.

Затем я подумал о своей проблеме с установщиком, создав пользовательский установщик для обслуживания, чтобы в любое время я мог обновлять свой код.

Я создал его таким образом, если кому-то понадобится это для будущего.

public class MyInstaller : Installer 
    { 
     ServiceProcessInstaller spi; 
     ServiceInstaller si; 
     public MyInstaller() 
     {    
      spi = new ServiceProcessInstaller(); 
      spi.Account = ServiceAccount.LocalSystem; 

      si = new ServiceInstaller(); 
      si.StartType = ServiceStartMode.Manual; 
      si.ServiceName = "MyService"; 
      si.DisplayName = "My Service"; 
      si.Description = "service installed from command line"; 

      this.Installers.Add(spi); 
      this.Installers.Add(si); 

     } 
} 

Я вызвал его из основного метода, проверив параметр args.

      case "-i": 
          case "-install": 
           ti = new TransactedInstaller(); 
           mi = new MyInstaller(); 
           ti.Installers.Add(mi); 
           string logPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\install.log"; 
           ctx = new InstallContext(logPath, cmdline); 
           ti.Context = ctx; //.Context (ctx); 
           ti.Install(new Hashtable()); 
           break; 

Теперь, когда я пытаюсь установить. I recevied error System.Security.SecurityException: Источник не найден, но некоторые или все журналы событий не могут быть найдены. Недостижимые журналы: безопасность.

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

Я не пишу ни одного журнала событий. У меня есть log4net для ведения журнала. Но все-таки его поведение по умолчанию.

Как преодолеть эту проблему сейчас? Его не устанавливают, даже у меня есть все разрешения.

Благодаря

ответ

56

Я обнаружил, что иногда вам может понадобиться «Запуск от имени администратора». Если вы устанавливаете из командной строки, возможно, вам нужно будет запустить , чтобы с «Запуск от имени администратора».

+0

Я сделал это, используя cntrl + shift + enter in run.Затем снова я manaully правой кнопкой мыши и запускаю как администратор, и это сработало человеком. спасибо, какие глупые ошибки я делаю. , но я хотел бы знать, как улучшить начальную и конечную работу службы окна. – sunder

+0

@sunder: при запуске/остановке производительность будет * много *, чтобы делать то, что делает ваш сервис. «Пуск» должен быть ОК, так как обычно вы разворачиваете новый поток, который выполняет эту работу. Для остановки вам понадобится быстрый способ остановить то, что происходит в потоке. Таким образом, нет никакого общего способа повысить производительность. –

+0

Я создал командный файл (.BAT) для установки службы, и я запускал пакет как администратор, но он не работал. Затем я запускаю командную строку как администратор и устанавливаю службу без BAT-файла, просто набрав имя EXE-файла -install. Я не знаю, почему это произошло, но, возможно, это может помочь другим. Я думаю, что это может быть связано с тем, что запуск BAT-файла в качестве администратора не выполняет код, который вы пишете там как admin, просто файл BAT. –

1

Возможно, у меня была отдельная основная причина для сообщения, но я исправил ее, изменив мою службу, чтобы работать как LocalSystem (это то, что я хочу в любом случае) вместо LocalService.

0

Я могу подтвердить, что под "Windows 7 64 бит" и "Windows 10" вы должны:

1) запустить командную строку студии Визуальный AS АДМИНИСТРАТОРА (правый клик .. Другое .. чан как администратор)

enter image description here

2) перейдите в папку «obj», где у вас есть exe. (кд [все пути к \ OBJ]) 3) запуск InstallUtil [myservice.exe]

, если не запускать как "администратор", он не даже на старом win7. :(

примечание: MSDN делает это объяснить:

(по адресу: https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer)

«Для того, чтобы установить службу Windows, вы должны иметь права администратора на компьютере, на котором вы устанавливаете его.»

:)