以管理員身分執行程式的批次檔 - 錯誤 740

以管理員身分執行程式的批次檔 - 錯誤 740

我正在編寫一個小批次腳本,該腳本可提升基本 Windows 程式以管理員身份運行。

所有功能都運作正常,但我在嘗試執行“regedit.exe”時遇到了問題。

當在腳本中選擇選項 3 並且它應該以管理員身份運行 regedit 時,我收到錯誤:

740:請求的操作需要提升。

這是腳本:

echo off
cls
echo.
echo Start as admin:
echo /----------------\
echo # 1. CMD         #
echo # 2. Task Manager#
echo # 3. Regedit     #
echo # 0. Exit        #
echo \----------------/
echo.

set /p run=

if %run%==1 (
set run="cmd"
)

if %run%==2 (
set run="taskmgr"
)

if %run%==3 (
set run="regedit"
)

if %run%==0 (
exit
)

runas /savecred /user:admin %run%

有解決方法嗎?

我希望在不安裝第三方程式、修改註冊表或停用 UAC 的情況下使其正常運作。

答案1

您可以透過使用 RunAs 啟動新的 CMD 提示字元來完成此任務,您可以告訴它啟動命令。

若要在批次中執行此操作,請將最後一行變更為:

runas /savecred /user:admin "cmd /c %run%"

答案2

Add this to the top of your Batch file and at the end just put %run% instead of (runas /savecred /user:admin %run%)


@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"
    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"
:--------------------------------------

答案3

也許可以提供協助,或者可能以管理員身分啟動整個批次可能會有所幫助,透過建立另一個包含以下內容的批次腳本來完成:

runas /user:admin C:\Path_to_your_batch_file\name.bat

答案4

  1. 右鍵單擊 C:\Windows\regedit.exe 並選擇屬性
  2. 在相容性標籤中選擇“以管理員身份執行此程式”

相關內容