从AutoIt执行的批处理脚本导致无限循环



AutoIt文件中有以下内容:

#RequireAdmin
Run("start_privileged.bat")

批处理文件包含以下内容:

@echo off
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%SysWOW64cacls.exe" "%SYSTEMROOT%SysWOW64configsystem"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
)
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%getadmin.vbs"
    "%temp%getadmin.vbs"
    del "%temp%getadmin.vbs"
    exit /B
:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"

我的问题是,如果我执行AutoIt脚本,批处理文件在一个无尽的循环中被调用,所以你会癫痫发作。你必须经常按下打开的CLI的"X",直到打开的窗口关闭。如果我通过双击它来启动批处理文件,它就会正常工作。

你现在,我要做什么,所以脚本只打开一次?

提前感谢。

来自OP的管理员权限请求脚本存在已知问题并且已经过期。

使用这个脚本代替,它目前正在工作,没有已知的错误:

如何请求批处理文件中的管理员访问权限

但:

要请求管理权限,任何批处理脚本都需要运行另一个自创建的脚本,因此它可能无法与AutoIT一起工作。但是试试吧,让我知道!

下午好,Marcel,

尝试在AutoIt脚本的末尾添加EXIT命令。我现在不在工作电脑上,所以我不能访问管理员来测试它。

#RequireAdmin
Run("start_privileged.bat")
EXIT

这听起来很简单,它应该在请求管理员权限并运行批处理文件后终止AutoIt脚本。如果你还有问题,告诉我。我相信我们能想出一些办法来做你想做的事。

谢谢,蒂姆

相关内容

  • 没有找到相关文章

最新更新