【问题标题】:Is there an option to have score of UAC prompt?有没有获得 UAC 提示分数的选项?
【发布时间】:2022-02-01 10:05:16
【问题描述】:

我有这个脚本,它有 goto getPrivileges,这是没用的,因为它一直在为 UAC 发送垃圾邮件,是否有一个选项可以让你接受 UAC,然后做一件事,如果你不做另一件事?

@echo off
:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
echo Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
echo args = "ELEV " >> "%vbsGetPrivileges%"
echo For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
echo args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
echo Next >> "%vbsGetPrivileges%"
echo UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
goto getPrivileges
exit /B

我想要这样的东西。

if %UACError% == 0 echo You clicked yes on UAC!
if %UACError% == 1 echo You clicked no on UAC!

【问题讨论】:

  • 尽管您没有明确定义提交代码的问题,以及足够的信息让我们全部复制它,但我们不是在这里提供免费代码或修改。如果你有一些你在别处找到的代码,但它没有做你需要做的事情,那么修改它是你的责任,而不是我们的。本网站的目的是帮助您解决实际代码的可重现问题,而不是其功能。请确保您使用tour,然后通读所有How to Ask,以便更好地了解这里的工作原理。
  • 但是这段代码有效,我只需要一个函数来处理你在 uac 中点击的内容
  • 我们只帮助您修复不工作的代码,您正在寻找的是有人为您编写代码,而这不是我们在本网站上所做的! 哦,虽然该代码可能对您有用,但我永远不会使用它……

标签: batch-file uac


【解决方案1】:

你不应该在启动 vbs 脚本后做goto getPrivileges

据我了解,vbs 脚本的内容只是以提升的权限重新启动当前批次 (!batchPath!)。

因此,如果提升成功,此重新启动将执行 :checkPrivileges 并转到 :gotPrivileges,并执行需要提升的任务。

所以对我来说,你可以摆脱你最后一个产生无限循环的goto getPrivileges

为避免这种无限循环,您还可以像这样等待 vbs 脚本终止:

start /WAIT "%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*

关于 UAC 的结果,我认为 :checkPrivileges 中的代码部分就是为了测试这一点。

如果这不起作用,我找到了另一种检查权限的方法(here,法语):

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' ( ...privilege...   ) else (  ...no privilege... )

不过,我并没有自己测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2015-06-16
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多