
私は、基本的な 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
- C:\Windows\regedit.exeを右クリックしてプロパティを選択します
- 互換性タブで「管理者としてこのプログラムを実行する」を選択します