我要运行脚本
如果是,它将脚本的位置添加到%PATH%
环境变量中。
如果不是,它会升高,然后自行运行以完成上述操作。
但是无论我做什么,我要么得到一个升高的空窗口,要么我的代码没有升高,我的代码却在System32
中运行,因此错误的%cd%
中。
右侧的代码(橙色标记处的不同形式的pastebin)在正确的目录中运行,它会打开UAC提示符,并以错误的路径打开(底部)提升的终端
https://i.imgur.com/vU0rAcN.png“原始问题”
我认为问题出在图像1中的橙色标记上,我尝试用%~dp0%0
替换它,它起作用了! 但是,只有是从cmd终端运行的,而不是作为“双击”表单浏览器
请注意,我希望%~dp0
返回文件的完整路径,但它只返回目录。
https://i.imgur.com/z8VNawM.png“我无力修复它”
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
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 %~dp0%0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
echo %cd%
pause
我已删除了添加到路径部分的内容,以隔离问题,并防止自己和其他人在路径中添加垃圾:)
我希望原始路径会向下传递到高架窗户。通过.vbs,但没有。而且当它出现时,它就无法从explorer.exe中获得