Batch file REG查询命令的返回值

Batch file REG查询命令的返回值,batch-file,registry,uac,Batch File,Registry,Uac,首先为我的英语不好感到抱歉。 我必须检查uac是否正在运行 REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA 当UAC未运行时,此命令返回0x0,否则返回0x1。 但它带来了我仍然不需要的其他无用的东西 是否有可能只将0x0/0x1过滤成变量并保存到txt文件 for /f "tokens=3" %%a in ( 'REG QUERY

首先为我的英语不好感到抱歉。 我必须检查uac是否正在运行

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA
当UAC未运行时,此命令返回0x0,否则返回0x1。 但它带来了我仍然不需要的其他无用的东西

是否有可能只将0x0/0x1过滤成变量并保存到txt文件

for /f "tokens=3" %%a in (
    'REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA'
) do set "UAC=%%a"

> "someFile.txt" echo %UAC%
/f的
将执行命令,读取其输出,并使用空格和制表符作为分隔符拆分行。我们要第三个代币。与通常的
reg
命令输出一样

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
    EnableLUA    REG_DWORD    0x1
只有一行至少有三个令牌,因此只处理这一行。当我们请求第三个令牌时,
0x1
存储在
for
可替换参数中,该参数分配给
%UAC%
变量


然后,变量的值会回显到指定的文件

EnableLUA不是真正的UAC状态,它可能已过期。如果您在未重新启动的情况下更改UAC设置,则EnableLUA将为您提供错误的值


据我所知,没有文档化的方法获取当前UAC状态…

如果您想知道用户是否具有管理权限,请在c:\windows中创建一个文件,如果成功,他们会这样做,如果失败,他们不会<代码>回音。>c:\windows\uac.txt&&echo是管理员| | echo不是管理员
。为什么要用NSIS和批处理文件标记此问题?你需要批处理文件还是NSIS中的答案?我不知道应该在标签中写什么,仅此而已。我找到了另一种检查方法,NSIS本身。谢谢你的帮助:)。你的问题实际上是“我如何知道我是否在运行高架车?”而不是“我如何判断UAC是否已启用?”因此,你标记的答案实际上不是答案。谢谢,这正是我想要的,而不是你想要的。正如Anders指出的,该注册表值并不反映当前UAC状态。无论如何,这不是你的问题。您真正想知道的是您是否正在运行提升版,而不是UAC是否已启用。