首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VbScript中绕过UAC

在VbScript中绕过UAC
EN

Stack Overflow用户
提问于 2011-03-18 03:14:05
回答 2查看 17.9K关注 0票数 2

我有一个在用户注销时运行的Vbscript,它应该关闭一个服务,但是我不能关闭服务,因为它被UAC阻止了。我想知道是否有一种方法可以在我的vbscript中绕过UAC,而不是在我的域中的每台机器上都关闭UAC。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-18 03:18:57

如果你可以通过说“它不应该适用于我”来绕过它,那么UAC有什么意义呢?您不能从vbscript中通过绕过它。

不过,通过首先使用提升的凭据运行脚本,可以来管理地执行此操作。

例如通过以管理员或系统身份运行的"on logon“计划任务。我相信这在Windows7和vista上都能用。

要在远程计算机上创建此类任务,请执行以下操作:

代码语言:javascript
复制
schtasks.exe /create /S COMPUTERNAME /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /SC ONLOGON /TN "Administrative OnLogon Script" /TR "cscript.exe \"Path\To\Script.vbs\""

也可以使用脚本创建任务。

注意:如果这是脚本唯一要做的事情,您可以简单地使用SCNET STOP等命令直接停止服务。

票数 9
EN

Stack Overflow用户

发布于 2015-12-24 09:09:08

这是真的,你不能在中绕过它(以我所知的任何方式)。但vbscript是解决方案的一部分。

另一个稍微灵活一点的解决方案(丑陋但灵活)使用了下面两行vbscript:

代码语言:javascript
复制
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.LogEvent 4, "C536132C2CB6ABB85554670D2F97E23C"

对于调度触发器,该解决方案还需要以下自定义事件筛选器:

代码语言:javascript
复制
<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是从我的任务调度程序导出的(修改了主机名和用户is )。它运行一个管理员级别的powershell控制台

代码语言:javascript
复制
<?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>

请注意,您可以根据需要对数据字符串进行选择:

代码语言:javascript
复制
C536132C2CB6ABB85554670D2F97E23C

是任何足够唯一的字符串,您可以任意绑定到您想要以提升的权限运行的应用程序。因此,您可以在任何应用程序上担任管理员,而无需不断提醒windows7它是可以使用的。它真的不应该这么难:-(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5344021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档