Я пытаюсь запустить процесс как другой аккаунт. У меня есть команда:
runas "/user:WIN-CLR8YU96CL5\network service" "abwsx1.exe"
но тогда это просит пароль. Однако для сетевой службы пароль не установлен.
Возможно ли то, что я пытаюсь сделать?
Я пытаюсь запустить процесс как другой аккаунт. У меня есть команда:
runas "/user:WIN-CLR8YU96CL5\network service" "abwsx1.exe"
но тогда это просит пароль. Однако для сетевой службы пароль не установлен.
Возможно ли то, что я пытаюсь сделать?
Используйте PsExec.exe из SysInternals, запускаемый из командной строки с повышенными привилегиями.
например это откроет новую командную строку, работающую как NETWORK SERVICE:
psexec -i -u "nt authority\network service" cmd.exe
это будет запускаться как локальная система:
psexec -i -s cmd.exe
Вы можете проверить это, запустив whoami
из командной строки.
Смотрите также:
В планировщике заданий создайте задачу для запуска приложения под пользователем NETWORK SERVICE. Затем вы можете запустить задачу из командной строки, используя
schtasks /run /TN "taskname"
Где имя_программы - это имя вашей задачи.
Вы можете выдать себя за учетную запись службы только из службы Windows, как показано в этом сообщении:
Хитрость заключается в том, чтобы запустить ваш код как локальную систему, и оттуда вы можете олицетворять учетные записи службы, используя соответствующее имя пользователя без пароля. Один из способов запустить ваш код в качестве учетной записи локальной системы - создать оболочку командной строки, используя метод, показанный ниже (взятый из этого оригинального сообщения), и выполнить сборку оттуда. Вызов
System.Diagnostics.Debugger.Break()
в вашем коде позволяет отлаживать.Чтобы создать оболочку командной строки, которая запускается под учетной записью локальной системы, откройте новое окно командной строки и введите:
c:\sc create testsvc binpath= "cmd /K start" type= own type= interact
с последующим:
c:\sc start testsvc
Новое командное окно должно было открыться. В этом окне запустите файл application.exe - вы увидите, что теперь вы работаете как встроенная системная учетная запись пользователя. После завершения тестирования вы можете удалить созданный вами тестовый сервис, введя:
c:\sc delete testsvc
Если вы попытаетесь сделать это в своем собственном пользовательском контексте, то такие попытки должны потерпеть неудачу.
Я проверил
PsExec -i -s cmd.exe
а также
PsExec -i -u "nt authority\network service" cmd.exe
на PsExec64-v2.2 для win10-home-x64-10.0.14393 и win10-pro-x64-10.0.15063 использовать обычную консоль не удалось, используйте повышенную консоль - все работает нормально
Я знаю, что это старый поток, но это лучший результат для этой проблемы, и я хотел иметь возможность запускать команду с помощью PowerShell без необходимости устанавливать какие-либо дополнительные инструменты на нашем Windows Server. Я придумал следующий скрипт PowerShell, который создает запланированное задание, запускает его, а затем удаляет. Он также написан, чтобы позволить вам запускать команду под разными учетными записями пользователей.
function InstallDotNetCoreGlobalTool($PackageId, $Action = "install", $User = "NT AUTHORITY\NETWORK SERVICE", $Password = "")
{
$TaskName = "AzureDotNetCoreGlobalToolConfiguration"
$Command = "dotnet.exe"
$Arguments = "tool $Action -g " + $PackageId
$TaskAction = New-ScheduledTaskAction -Execute $Command -Argument $Arguments
Write-Host "Setting up scheduled task to run" $Command $Arguments
Register-ScheduledTask -TaskName $TaskName -User $User -Action $TaskAction
Start-ScheduledTask -TaskName $TaskName
Write-Host ""
Write-Host "Waiting on scheduled task to complete."
while ((Get-ScheduledTask -TaskName $TaskName).State -ne 'Ready')
{
# keep waiting
}
Write-Host ""
If((Get-ScheduledTask $TaskName | Get-ScheduledTaskInfo).LastTaskResult -eq 0)
{
Write-Host $PackageId $Action "completed successfully"
}
else
{
If ($Action -eq "install")
{
Write-Host $PackageId "failed to $Action. Ensure the proper dependencies have been installed or that it isn't already installed."
}
Else {
Write-Host $PackageId "failed to $Action. It may not currently be installed."
}
}
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
}
InstallDotNetCoreGlobalTool "Amazon.Lambda.Tools" "uninstall"