如何通过VBS修复不正确的%cd%表示法提升脚本

时间:2019-01-31 13:25:16

标签: batch-file

我要运行脚本

如果是,它将脚本的位置添加到%PATH%环境变量中。

如果不是,它会升高,然后自行运行以完成上述操作。

但是无论我做什么,我要么得到一个升高的空窗口,要么我的代码没有升高,我的代码却在System32中运行,因此错误的%cd%中。

右侧的代码(橙色标记处的不同形式的pastebin)在正确的目录中运行,它会打开UAC提示符,并以错误的路径打开(底部)提升的终端

https://i.imgur.com/vU0rAcN.png“原始问题”

我认为问题出在图像1中的橙色标记上,我尝试用%~dp0%0替换它,它起作用了! 但是,只有是从cmd终端运行的,而不是作为“双击”表单浏览器

请注意,我希望%~dp0返回文件的完整路径,但它只返回目录。

https://i.imgur.com/z8VNawM.png“我无力修复它”

My code on pastebin

>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中获得

0 个答案:

没有答案