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脚本。如果你还有问题,告诉我。我相信我们能想出一些办法来做你想做的事。
谢谢,蒂姆