Подтвердить что ты не робот

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

Я пытаюсь создать службу Windows, но когда я пытаюсь ее установить, она откатывается, давая мне эту ошибку:

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

Я не знаю, что это значит - мое приложение имеет минимальный минимум, так как я сначала проверяю вещи.

Мой код установщика:

namespace WindowsService1
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            //set the privileges
            processInstaller.Account = ServiceAccount.LocalSystem;
            processInstaller.Username = null;
            processInstaller.Password = null;

            serviceInstaller.DisplayName = "My Service";
            serviceInstaller.StartType = ServiceStartMode.Manual;

            //must be the same as what was set in Program constructor
            serviceInstaller.ServiceName = "My Service";

            this.Installers.Add(processInstaller);
            this.Installers.Add(serviceInstaller);
        }

        private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
        {
        }

        private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
        {
        }
    }
}

Мой код обслуживания:

public partial class Service1 : ServiceBase
{
    public Service1()
    {
        this.ServiceName = "My Service";
    }

    protected override void OnStart(string[] args)
    {
        base.OnStart(args);
    }

    protected override void OnStop()
    {
        base.OnStop();
    }
}
4b9b3361

Ответ 1

Если вам будет предложено ввести имя пользователя и пароль, то что-то, где-то установлено на Account = ServiceAccount.User -, что единственный способ, который может (должен) произойти. Возможно, ваш код в вышеприведенном комментарии не выполняется, или он заменяется более поздним выполнением кода.

Что касается вашего второго абзаца, в целом, я думаю, что услуга была бы прекрасна для этого, если вы не хотите, чтобы он отображался на консоли или выполнялся как задача. Я не уверен, насколько я понимаю, что он запускает его как ASP.NET и не позволяет вам видеть базу данных...

Наконец, в вашем последнем абзаце я не могу говорить с NullExeception, не зная больше о том, что происходит в вашем коде установщика.

Ответ 2

Я получил то же исключение при попытке установить службу из командной строки при использовании installutil в Windows 7. Решение заключалось в том, чтобы открыть командную строку как Администратор и затем запустите installutil.

Также вам может быть проще использовать фреймворк, например TopShelf для размещения ваших сервисов, поскольку он управляет всеми настроить конфигурацию от имени и описания службы до того, как будет работать ваш процесс восстановления. Это также позволяет легко запускать службу изнутри среды IDE при ее отладке.

Ответ 3

Запустите свою командную строку как администратор. Это решит вашу проблему.

Ответ 4

Запуск от имени администратора

Это очень распространенная проблема, которую пропускают программисты.

Ответ 5

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

Ответ 6

Возможно, вы пытаетесь установить службу с помощью

  1. Учетная запись пользователя, которая не имеет достаточных прав ИЛИ
  2. Пользователь с правами администратора, но не запустил командную строку в режиме администратора.

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

Один из способов исправить это - убедиться, что вы запускаете командную строку в режиме администратора. (Щелкните правой кнопкой мыши> Запуск от имени администратора)

Я также сталкивался с некоторыми случаями, когда этот метод все еще не решает проблему SecurityException из-за того, что некоторые ключи реестра не имеют разрешений "Полный доступ" для учетных записей администратора.

Следующие ключи должны иметь "Полный доступ" для администраторов, чтобы служба могла писать в EventLog:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application

Это может быть сделано:

  1. Вызов редактора реестра Windows
    • Запустите [Win + R]
    • Введите regedit
    • OK
  2. Перейдите к указанному выше пути
  3. Щелкните правой кнопкой мыши по нужному пути
  4. Убедитесь, что для администраторов установлены флажки разрешений "Чтение" и "Полный доступ"
  5. Нажмите Применить и OK
  6. Повторите тот же процесс для другого пути

Ответ 7

Я получал эту ошибку (выше в OP) при попытке проверить существование EventLog

   if (!EventLog.SourceExists("applicatioName"))
         EventLog.CreateEventSource("applicatioName", "Application");

Запуск VisualStudio в качестве администратора решил проблему.