Как создать службу, которая будет запускаться с правами администратора?

Привет всем! <br/> Я пытаюсь создать службу, вот мой код: <br/> <pre><code>$Parameters = @{
    Name = "SomeService"
    BinaryPathName = "c:/path/to/some/service.exe"
    StartupType = "Manual"
}

New-Service @Parameters -Credential (Get-Credential)</code></pre> <br/> Я запускаю сценарий в оболочке с правами администратора. Однако получаю следующую ошибку: "New-Service: Не удается создать службу 'SomeService' из-за следующей ошибки: Имя учетной записи задано неверно или не существует, или же неверен указанный пароль." <br/><br/> Может быть, у пользователя недостаточно прав, хотя он и является администратором?
  • 6 сентября 2024 г. 8:02
Ответы на вопрос 3
Чтобы создать службу Windows с использованием PowerShell и удостовериться, что она запускается с правами администратора, вам нужно учитывать несколько важных моментов:

1. **Параметр `-Credential`:** Этот параметр используется для указания учетных данных, необходимых для выполнения команды. Если вы запускаете PowerShell с правами администратора, вам не нужно указывать учетные данные, так как текущий сеанс уже имеет необходимые права. Например, просто уберите этот параметр:

   ```powershell
   $Parameters = @{
       Name = "SomeService"
       BinaryPathName = "c:/path/to/some/service.exe"
       StartupType = "Manual"
   }

   New-Service @Parameters
   ```

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

3. **Права пользователей:** Если вы хотите, чтобы служба запускалась под учетной записью, которая имеет права администратора, вы можете использовать параметр `-Credential` с правильными учетными данными, но, как уже упоминалось, если вы просто хотите использовать свою текущую учетную запись, то этот параметр не требуется.

4. **Использование `sc.exe`:** В некоторых случаях может быть полезно создать службу через `sc.exe`, что может упростить задачу. Вот пример, как это сделать:

   ```powershell
   sc create "SomeService" binPath= "c:\path\to\some\service.exe" start= demand
   ```

   Обратите внимание на пробел после `binPath=`, который обязателен требованию команды `sc`.

Если после выполнения этих шагов проблема всё ещё возникает, проверьте, что у вас есть права на создание службы. Также убедитесь, что ваш антивирус или другие средства безопасности не блокируют процесс создания служб.
Лучше создайте отдельную сервисную УЗ и наделите необходимыми правами (как минимум - Logon As A Service) 
из описания New-Service :
-Credential
Specifies the account used by the service as the Service Logon Account.
Оказывается нужно добавить префикс домена к юзеру((DESKTOP-XXX/user1), тогда работает.
Похожие вопросы