Обход UAC в VbScript - PullRequest
       3

Обход UAC в VbScript

2 голосов
/ 17 марта 2011

У меня есть Vbscript, который запускается при выходе пользователя из системы, что предполагает отключение службы, однако я не могу отключить службу, поскольку она заблокирована UAC. Мне было интересно, есть ли способ обойти UAC в моем VBScript вместо необходимости отключать UAC на каждой машине в моем домене. спасибо!

Ответы [ 2 ]

9 голосов
/ 17 марта 2011

Какой смысл UAC, если бы вы могли обойти это, сказав, что «это не должно относиться ко мне»? Вы не можете обойти это из VBScript .

Вы можете сделать это административно, хотя, запустив сценарий с использованием повышенных учетных данных, в первую очередь .

Например, при наличии запланированной задачи «при входе в систему», выполняющейся от имени администратора или SYSTEM. Я считаю, что это работает в Windows 7 и Vista.

Чтобы создать такую ​​задачу на удаленной машине:

schtasks.exe /create /S COMPUTERNAME /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /SC ONLOGON /TN "Administrative OnLogon Script" /TR "cscript.exe \"Path\To\Script.vbs\""

Задачи также можно создавать с помощью скрипта.

Примечание: Если это единственное, что делает скрипт, вы можете просто использовать команду типа SC или NET STOP, чтобы напрямую остановить службу.

0 голосов
/ 24 декабря 2015

Совершенно верно, что вы не можете обойти это из VBScript (любым способом, который я знаю).Но vbscript - это часть решения.

Другое немного более гибкое решение (некрасивое, но гибкое) использует следующие 2 строки vbscript:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.LogEvent 4, "C536132C2CB6ABB85554670D2F97E23C"

Для решения также требуется следующий пользовательский фильтр событий xml для триггера планирования:

<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">
  *[System[Provider[@Name='WSH'] and (Level=4 or Level=0) and (EventID=4)]] 
  and 
  *[EventData[Data='C536132C2CB6ABB85554670D2F97E23C']]
</Select>
</Query>
</QueryList>

Следующий xml - это экспорт из моего планировщика задач (с измененными именем хоста и ИД пользователя),Он запускает консоль PowerShell уровня администратора

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2013-07-24T15:00:52.6087783</Date>
<Author>MyRealHostName\my_real_login_name</Author>
<Description>Hack to run powershell as admin without confirmation</Description>
</RegistrationInfo>
<Triggers>
<EventTrigger>
<Enabled>true</Enabled>
<Subscription>
&lt;QueryList&gt;&lt;Query Id="0" Path="Application"&gt;&lt;Select Path="Application"&gt;
*[System[Provider[@Name='WSH'] and (Level=4 or Level=0) and (EventID=4)]] 
and 
*[EventData[Data='C536132C2CB6ABB85554670D2F97E23C']]
&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;
</Subscription>
</EventTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>MyRealHostName\my_real_login_name</UserId>
<LogonType>InteractiveToken</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>false</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>false</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe</Command>
<Arguments>-NoLogo -NoExit</Arguments>
<WorkingDirectory>c:\users\my_real_login_name</WorkingDirectory>
</Exec>
</Actions>
</Task>

Обратите внимание, что вы можете быть настолько избирательными, насколько это необходимо, с помощью строки данных:

C536132C2CB6ABB85554670D2F97E23C

Любая достаточно уникальная строка, которую вы произвольно связываете с приложением, которое хотите запустить с повышенными привилегиями.Таким образом, вы можете быть администратором любого приложения, не напоминая Windows 7, что все в порядке.Это действительно никогда не должно быть так сложно: - (

...