1. ホーム
  2. batch-file

[解決済み】バッチファイル内で管理者権限を要求する方法

2022-04-12 19:32:07

質問

私は、ユーザーがVistaマシンからUACで実行するためのバッチファイルを作成しようとしています。 このファイルはhostsファイルを書き換えるものなので、管理者権限で実行する必要があります。 .batファイルへのリンクを電子メールで送信できるようにする必要があります。 望ましい動作は、ファイルを右クリックして「開く」と言うと、画面が暗転し、アプリケーションに管理者として実行する許可を与えるかどうかを回答させるようなUACダイアログが表示されるようにすることです。 その代わり、コマンドラインウィンドウに "Access denied" が表示されるだけです。

これは、別の方法で可能なのでしょうか?

どのように解決するのですか?

このスクリプトで解決します! batファイルの先頭に貼り付けるだけです。スクリプトの出力を確認したい場合は、バッチファイルの一番下に "pause"コマンドを追加してください。

UPDATE: このスクリプトは、コマンドライン引数と64ビットOSをサポートするために少し編集されました。

エネージュ@さんありがとうございました https://sites.google.com/site/eneerge/scripts/batchgotadmin

@echo off

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>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"
:--------------------------------------    
    <YOUR BATCH SCRIPT HERE>