バッチ ファイルから実行したい管理者特権を必要とするプログラムがあります。コマンド ラインから実行できるコマンドはどれで、管理者権限でプログラムを実行できますか? 許可を求めるポップアップ ウィンドウは問題ありません。さらに、ファイルはコンピューターのどこからでも実行できる必要があるため、追加のファイルは ./src から実行されます。問題は、右クリックして「管理者として実行」を選択すると、現在のディレクトリが変更されるため、./src が機能しなくなることです。マシンで UAC を無効にすると、すべて正常に動作します。ありがとうございました!
2 に答える
これは難しいことです。マイクロソフトは、RunAs を除いて、これを行うためのユーティリティを提供していません (主にバッチ ファイルを提供するとセキュリティが損なわれるためです)。
SendKeys を使用して [スタート] メニューを開き、コマンドライン シェルを起動する cmd[CTL]+[SHIFT]+[ENTER] と入力することで、同様のことを実行できる JScript プログラムがあります。
StartAdmin.js のように、以下を .js ファイルとして保存します。
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys("^{esc}cmd^+{ENTER}"); The equivilent of [CTRL]+[ESC] cmd [CTRL]+[SHIFT]+[ENTER]
バッチ ファイルから StartAdmin.js を実行するには、次の行が必要です。
wscript StartAdmin.js
特定のディレクトリから起動してバッチ ファイルを起動するには、StartAdmin.js の 2 行目を次のように変更します。
WshShell.SendKeys("^{esc}cmd /C "cd %userprofile% & batchfile.bat"^+{ENTER}");
/C スイッチは、コマンドを実行してからコマンド ライン ウィンドウを閉じるように指示します。
/K は、バッチ ファイルを終了した後、コマンド ウィンドウを開いたままにします。
SendKeys コマンドを理解するには:
+=[Shift Key]
^=[Control Key]
{esc}=[Escape Key]
{enter}=[Enter Key]
CMD.EXE の使用方法の詳細については、「CMD /?」と入力してください。コマンドプロンプトで。
これは非常に乱雑で醜い方法ですが、Windows に付属のツールのみを使用する方法を私が知っている唯一の方法です。
こちらをご覧ください: https://superuser.com/a/269750/139371
昇格が機能しているようで、呼び出しています
C:\Utils\bin.x86-64\elevate.exe -k dir
dir
呼び出された「現在のディレクトリ」で実行elevate
されます。