检查UAC状态

时间:2012-06-30 19:35:09

标签: batch-file uac

如何编写一个批处理文件的脚本,该文件将通过以下方式检查是否启用了UAC:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA

如果结果为:

,则启用
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System EnableLUA    REG_DWORD    **0x1**)

如果结果为:

,则会被禁用
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System EnableLUA    REG_DWORD    **0x0**)

然后,脚本应根据结果运行不同的命令。

2 个答案:

答案 0 :(得分:1)

您可以使用FINDFINDSTR搜索一个或另一个值,并根据搜索结果调用命令。模式基本上是这样的:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA | (
  FIND "0x1" >NUL
) && (
  command(s)_to_run_when_UAC_is_enabled
) || (
  command(s)_to_run_when_UAC_is_disabled
)

即。 REG生成一个输出,使用“管道”(|)传递给FIND的输入。 FIND在其输入中查找0x1,并且根据搜索结果,执行以下括号内的命令块之一。

command && command || command是一种标准机制,允许您有选择地运行命令,这是IF的替代品。第一个命令产生一个结果。如果结果为“成功”,则&&之后的命令运行,而||之后的命令在失败的情况下运行。

如果您需要在两种情况下都执行操作,请在生成结果的命令后使用&&||,但如果只应对一种结果做出反应,则可以省略&&||

答案 1 :(得分:1)

查看有关EnableLUA here的Microsoft文档:

@echo off
for /f "skip=2 tokens=3" %%a in ('reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA') do if "%%a" equ "0x0" (
rem When UAC is disabled
) ELSE (
rem When UAC is enabled
)