バッチファイルを自動的に昇格して管理者として実行する方法

バッチファイルを手動で昇格するには、バッチファイルを右クリックして、[管理者として実行]を選択します。 これは、正しく実行するために昇格された特権を必要とするバッチファイルを自動的に昇格する方法です。 これは、バッチファイルを右クリックして[管理者として実行]を選択するのと同じです。 どちらの場合でも、UACプロンプトは引き続き表示されます。

バッチファイルの自動昇格

:::::::::::::::::::::::::::::::::::::::::::: :: Automatically check & get admin rights V2 :::::::::::::::::::::::::::::::::::::::::::: @echo off CLS ECHO. ECHO ============================= ECHO Running Admin shell ECHO ============================= :init setlocal DisableDelayedExpansion set "batchPath=%~0" for %%k in (%0) do set batchName=%%~nk set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs" setlocal EnableDelayedExpansion :checkPrivileges NET FILE 1>NUL 2>NUL if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) :getPrivileges if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges) ECHO. ECHO ************************************** ECHO Invoking UAC for Privilege Escalation ECHO ************************************** ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%" ECHO args = "ELEV " >> "%vbsGetPrivileges%" ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%" ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%" ECHO Next >> "%vbsGetPrivileges%" ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%" "%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %* exit /B :gotPrivileges setlocal & pushd . cd /d %~dp0 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1) :::::::::::::::::::::::::::: ::START :::::::::::::::::::::::::::: REM Run shell as admin (example) - put here code as you like ECHO %batchName% Arguments: %1 %2 %3 %4 %5 %6 %7 %8 %9 cmd /k 

この.batファイルの「START」ラベルの下に指示を追加します。

$config[ads_text6] not found

このバッチファイルはVbscriptファイルを作成し、昇格に必要な「runas」パラメーターを使用して、バッチファイルを管理者として再起動します(管理者権限でまだ実行されていない場合)。 Vbscript&“ runas”メソッドは、Windows Vista以降での以前の投稿VbscriptsおよびUACの昇格で説明されています。

このメソッドのスタックオーバーフローでのMattの功績。 windows –バッチファイルを自動昇格させて、必要に応じてUAC管理者権限から要求できるようにする方法

デフォルトで昇格されたバッチファイルの実行

上記の自動昇格方法に加えて、クライアント側からレジストリを調整して、バッチファイルが常に昇格されてUACプロンプトが表示されるようにすることができます。 これを行うには、レジストリのデフォルトのダブルクリックアクションを「開く」から「runas」に変更します。 次の手順を使用します。

Regedit.exeを起動し、次の場所に移動します。

 HKEY_CLASSES_ROOT \ batfile \ shell 

ダブルクリックして(デフォルト)、その値のデータをrunasとして設定します。

レジストリエディタを終了します。

この変更後、バッチファイルはダブルクリックすると常に昇格して実行されます。 .batファイルを右クリックすると、デフォルトのオプションとして管理者として実行が表示されます。

関連記事