爬文試了很多組程式碼都遇到一樣的問題,放到批次檔最前面還是都會跳UAC
%1 Mshta vbscript:CreateObject("Shell.Application").ShellExecute("Cmd.exe","/C ""%~0"" ::","","runas",1)(window.close)&&exit
原來批次檔要執行的程式碼如下
diskpart /s C:\"路徑"\RemoveLetter.txt
TXT檔內容如下
list vol
sel vol 2
remove letter=E
有拿另一台電腦測試卻是正常可以跳過
最後直接用以下程式碼測試有問題的電腦
%1 Mshta vbscript:CreateObject("Shell.Application").ShellExecute("Cmd.exe","/C ""%~0"" ::","","runas",1)(window.close)&&exit
net session
pause
發現在執行vbscript那行時就會跳出UAC
點選是之後,跳出另一個CMD視窗
剩下兩行都有正常執行
想詢問高手有沒有解決的辦法呢?
補充 找到這組程式碼測試
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>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"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
@echo on
發現好像是在第16行時
執行 "%temp%\getadmin.vbs" 會跳出UAC
有人遇過一樣的問題嗎?
人類的「系統管理員」帳號不是最高權限
只是有資格請求管理者權限
以使用者登入在Windows呼叫任何需要管理權限都會跳UAC
Windows最高權限是「SYSTEM」
僅限作業系統內部程式能夠使用