iT邦幫忙

0

批次檔已加上管理者權限程式碼仍會跳UAC

  • 分享至 

  • xImage

爬文試了很多組程式碼都遇到一樣的問題,放到批次檔最前面還是都會跳UAC

https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator

%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

有人遇過一樣的問題嗎?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
ithuser_9527
iT邦新手 5 級 ‧ 2022-09-05 16:31:35

人類的「系統管理員」帳號不是最高權限
只是有資格請求管理者權限
以使用者登入在Windows呼叫任何需要管理權限都會跳UAC
Windows最高權限是「SYSTEM」
僅限作業系統內部程式能夠使用

我要發表回答

立即登入回答