私のBATファイル内に次の行があります。
"Example1Server.exe"
管理者モードで実行したい。これを管理者として実行するようにバットコードを変更するには?
これは正しいです?引用符を付ける必要がありますか?
runas /user:Administrator invis.vbs Example1Server.exe
私のBATファイル内に次の行があります。
"Example1Server.exe"
管理者モードで実行したい。これを管理者として実行するようにバットコードを変更するには?
これは正しいです?引用符を付ける必要がありますか?
runas /user:Administrator invis.vbs Example1Server.exe
回答:
runas
特定のユーザーとしてプログラムを起動するために使用します。
runas /user:Administrator Example1Server.exe
Example1Server.exe
)は引用符で囲む必要はありませんが、他の場合(名前のスペースなど)では、Example1 Server.exe
実際にそれらが必要になります。あなたはできるものの、それらは、必要とされていない場合でも、引用符を使用しています。
runas /User:abc "csript myscript.vbs"
必要がありrunas /User:abc "cmd /c start ..."
ます。
もう1つの回答では、管理者アカウントのパスワードを入力する必要があります。また、管理者グループのアカウントで実行することは、管理者として実行することと同じではありません。WikipediaのUACを参照してください。
Windows 7の手順
管理者として実行するには、バッチファイルのショートカットを作成します。
次に、管理者として実行するようにショートカットを設定できます。
これで、ショートカットをダブルクリックすると、UACの確認と[ 管理者として実行](上記で述べたように、管理者グループのアカウントで実行する場合とは異なります)を求めるプロンプトが表示されます。
下のスクリーンショットを確認してください
注: 管理者として実行する場合、現在のディレクトリ(パス)はbatファイルと同じにはなりません。これは、多くの場合、batファイルがその横にある相対ファイルを参照するという問題を引き起こす可能性があります。たとえば、私のWindows 7では、cur dirはbatファイルの場所ではなくSYSTEM32になります。 それを回避するには、使用する必要があります
cd "%~dp0"
以上
pushd "%~dp0"
cur dirがbatファイルと同じパスにあることを確認します。
これをbatファイルの先頭に追加するだけです:
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
管理者に昇格し、正しいディレクトリにとどまります。Windows 10でテスト済み。
exit
、バッチファイルの最後に追加する必要がありました。そうしないと、プロンプトが表示されたままになります。これはおそらく、.vbsが2番目のコマンドプロンプトを起動するためです。
サードパーティのユーティリティを使用できる場合はelevate
、ここにコマンドラインユーティリティがあります。
これは使用法の説明です:
Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog
elevate.exe
岩!
あなたは使用することができますnircmd.exeの昇格コマンドを
NirCmdコマンドリファレンス-elevate
elevate [Program] {Command-Line Parameters}
Windows Vista / 7/2008のみ:管理者権限でプログラムを実行します。[プログラム]に1つ以上のスペース文字が含まれている場合は、引用符で囲む必要があります。
例:
elevate notepad.exe
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS
elevate "c:\program files\my software\abc.exe"
PS:私は勝利10でそれを使用し、それは動作します
このツールを使用してバッチファイルを.exeに変換します。http://www.battoexeconverter.com/その後、管理者として実行できます。
私の実験では、runasコマンドに管理者ユーザーのドメインを含める必要があることを示しています(少なくとも、私の組織の環境設定には含まれています)。
runas /user:AdminDomain\AdminUserName ExampleScript.bat
管理ユーザーのドメインがまだわからない場合は、コマンドプロンプトのインスタンスを管理ユーザーとして実行し、次のコマンドを入力します。
echo %userdomain%
Kerrek SBとEd Greavesの両方が提供する回答は、管理ユーザーの下でターゲットファイルを実行しますが、ファイルが通常のログインで操作しようとするコマンドスクリプト(.batファイル)またはVBスクリプト(.vbsファイル)である場合ユーザーの環境(レジストリエントリの変更など)では、スクリプトが実際に実行される環境は、通常のログインユーザーではなく、管理ユーザーの環境になるため、期待どおりの結果が得られない場合があります。たとえば、ファイルがレジストリのHKEY_CURRENT_USERハイブで動作するスクリプトの場合、影響を受ける「現在のユーザー」は、通常のログインユーザーではなく、管理ユーザーになります。