Я в основном запускаю команду powershell (с повышенным уровнем powershell):
New-Service -name MyServiceName -binaryPathName "C:\myservice.exe -m myArgument" -Description "MyDescription" -displayName "MyDisplayName" -startupType Manual -credential $mycreds
Предварительно я запускаю это, чтобы сгенерировать $ mycreds (имя службы - правильное имя для сетевой службы). на немецком языке:
$login = "NT-AUTORITÄT\Netzwerkdienst"
$secpasswd = (new-object System.Security.SecureString)
$mycreds = New-Object System.Management.Automation.PSCredential ($login, $secpasswd)
Когда я сейчас ищу службу в диспетчере служб windows, я вижу это в настройках входа в систему (снимок экрана на немецком языке, но вы можете убедиться, что учетные данные, кажется, имеют было передано правильно):
Когда я сейчас запускаю службу, я получаю эту ошибку:
1068: ...“the dependency service or group failed to start”.
Эта ошибка делает нет никакого смысла, поскольку нет никакой зависимости от этой службы.
Если я теперь, однако, открою настройки входа в систему,
- установите для них значение "Локальная система"
- нажмите применить
- , установите для них значение «account:» и введите имя учетной записи (NT-AUTORITÄT \ Netzwerkdienst), также стирая значения в полях «пароль» и «повторный пароль»
- нажмите OK
Если я сейчас попытаюсь запустить службу, она останется rts успешно.
Однако мне нужно автоматически зарегистрировать мою службу, чтобы она использовала учетную запись networkservice.
Я что-то не так делаю? Есть ли другой способ сделать это?
Обратите также внимание, что я уже позаботился о том, чтобы предоставить учетной записи Network-service право входа в систему в качестве службы до действий, указанных в этом вопросе. Учетная запись не просто получает право входа в систему в качестве службы, потому что я вручную ввел имя учетной записи и принял всплывающее окно с сообщением, которое обычно сообщает мне, что учетная запись только что получила право.
Новое! Я добавил это, с чем вы могли бы помочь мне, попробовав это самостоятельно:
С помощью этого скрипта вы можете проверить это самостоятельно, создав службу из notepad.exe:
$secpasswd = (new-object System.Security.SecureString)
$SID = [System.Security.Principal.WellKnownSidType]::NetworkServiceSid
$Account = new-object system.security.principal.securityidentifier($SID, $null)
$NetworkServiceName = $Account.Translate([system.security.principal.ntaccount]).value
$mycreds = New-Object System.Management.Automation.PSCredential ($NetworkServiceName, $secpasswd)
New-Service -Name test1 -BinaryPathName C:\Windows\System32\notepad.exe -Description testDescription -StartupType Manual -Credential $mycreds
Обязательно предоставьте учетной записи NetworkService право входа в систему в качестве службы.
Получается ли ошибка при запуске службы после этого? Это ошибка зависимости, которая не имеет смысла, или это что-то другое?