Как задать логин и пароль при создании службы в NSSM?

Я пытаюсь создать службу с помощью CMD, используя следующую команду: 
<pre><code>nssm install TotalCMD2 confirm &amp;&amp; nssm set TotalCMD2 Application psexec64 &amp;&amp; nssm set TotalCMD2 AppParameters -u User -p 555555 -i 1 %Commander_EXE% /i=%Commander_PATH%\WinCMD64.ini &amp;&amp; nssm set TotalCMD2 Description Служба для запуска Total Commander при загрузке. &amp;&amp; nssm set TotalCMD2 Start SERVICE_AUTO_START &amp;&amp; nssm set TotalCMD2 ObjectName User 555555 &amp;&amp; nssm set TotalCMD2 Type SERVICE_WIN32_OWN_PROCESS &amp;&amp; nssm set TotalCMD2 AppPriority ABOVE_NORMAL_PRIORITY_CLASS &amp;&amp; nssm set TotalCMD2 AppNoConsole 1 &amp;&amp; nssm set TotalCMD2 AppStopMethodSkip 1 &amp;&amp; nssm set TotalCMD2 AppExit Exit</code></pre> 

Однако, когда я задаю 'ObjectName User 555555', команда не срабатывает, и я получаю ошибку:
<pre><code>ChangeServiceConfig(): Имя учетной записи задано неверно или не существует, или же неверен указанный пароль.

Error setting parameter "ObjectName" for service "TotalCMD2"!</code></pre> 

Я попытался изменить 'ObjectName' на '\\Domain\User 555555', но тогда возникает следующая ошибка:
<pre><code>Failed to look up the SID for username \\Human\BlagoYar!
LsaLookupNames(): Сопоставление между именами пользователей и идентификаторами безопасности не было произведено.</code></pre> 

Как я могу исправить эти ошибки при создании службы через CMD? Хотя через интерфейс GUI все работает нормально, я предпочел бы сделать это через командную строку.
  • 29 октября 2024 г. 22:02
Ответы на вопрос 3
При использовании NSSM (Non-Sucking Service Manager) для создания службы с использованием учетной записи пользователя, необходимо правильно указать имя пользователя и пароль. Ошибки, которые вы получаете, указывают на проблемы с идентификацией учетной записи.

Вот несколько шагов, которые можно предпринять, чтобы исправить ошибку:

1. **Формат имени учетной записи**:
   - Формат имени пользователя может быть указан в разных вариантах:
     - `UserName` — если пользователь является локальным.
     - `Domain\UserName` — если пользователь является доменным.
   - Убедитесь, что вы используете правильный формат, особенно если ваша машина является частью домена.

2. **Проверка учетной записи**:
   - Убедитесь, что учетная запись пользователя реально существует и что у нее есть право на запуск служб.

3. **Правильная команда для задания ObjectName и пароля**:
   - Вместо `ObjectName User 555555`, используйте правильный формат:
     ```cmd
     nssm set TotalCMD2 ObjectName "Domain\YourUserName"
     nssm set TotalCMD2 Password YourPassword
     ```

4. **Создание записи без использования недопустимых символов**:
   - Если ваш пароль содержит специальные символы, попробуйте заключить его в кавычки.
   - Пример:
     ```cmd
     nssm set TotalCMD2 Password "YourPasswordWithSpecial$Sym"
     ```

5. **Полная команда**:
   - Ваши команды могут выглядеть следующим образом при наличии всех параметров:
     ```cmd
     nssm install TotalCMD2 confirm
     nssm set TotalCMD2 Application psexec64
     nssm set TotalCMD2 AppParameters -u "Domain\UserName" -p "YourPassword" -i 1 "%Commander_EXE%" /i="%Commander_PATH%\WinCMD64.ini"
     nssm set TotalCMD2 Description "Служба для запуска Total Commander при загрузке."
     nssm set TotalCMD2 Start SERVICE_AUTO_START
     nssm set TotalCMD2 ObjectName "Domain\UserName"
     nssm set TotalCMD2 Password "YourPassword"
     nssm set TotalCMD2 Type SERVICE_WIN32_OWN_PROCESS
     nssm set TotalCMD2 AppPriority ABOVE_NORMAL_PRIORITY_CLASS
     nssm set TotalCMD2 AppNoConsole 1
     nssm set TotalCMD2 AppStopMethodSkip 1
     nssm set TotalCMD2 AppExit Exit
     ```

6. **Проверка прав учетной записи**:
   - Убедитесь, что у пользователя, под которым вы хотите запустить службу, есть права для запуска служб на вашей машине.

7. **Проверка прав администратора**:
   - Команды NSSM требуют прав администратора. Убедитесь, что ваша командная строка запущена от имени администратора.

Следуя этим шагам, вы сможете правильно настроить службу с помощью NSSM. Если после выполнения всех вышеперечисленных действий ошибка остается, проверьте журнал событий Windows на наличие дополнительных сообщений, которые могут помочь в диагностике проблемы.
Дошёл до более менее адекватной ошибки, это указав ObjectName \\Domain\User 555555, получаю


Попробуйте Domain\User, имя пользователя часто указывается так. Domain тут - имя домена AD, в котором существует пользователь - при условии что компьютер включен в этот домен или в домен, который доверяет этому. Если компьютер не в домене или пользователь - локальный, то вместо имени домена указывается имя компьютера.
User 555555
это прям имя пользователя (sAMAccountName) такое? с пробелом? или это DisplayName? обычно все, что с пробелами, заключается в кавычки...
Служба для запуска Total Commander при загрузке
а чем обычная автозагрузка не подходит?
Похожие вопросы