Я намагаюся запустити процес як інший обліковий запис. У мене є команда:
runas "/user:WIN-CLR8YU96CL5\network service" "abwsx1.exe"
але потім запитує пароль. Однак пароль мережі не встановлений.
Чи можливо те, що я намагаюся зробити?
Відповіді:
Використовуйте PsExec.exe від SysInternals, що працює з підвищеного командного рядка.
наприклад, це відкриє новий командний рядок, що працює як СЕТЕВА СЛУЖБА:
psexec -i -u "nt authority\network service" cmd.exe
це запустить його як ЛОКАЛЬНУ СИСТЕМУ:
psexec -i -s cmd.exe
Ви можете перевірити їх, запустивши whoami
з підказки cmd.
Дивіться також:
У Планувальнику завдань створіть завдання для запуску програми під користувачем 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"