web-dev-qa-db-ja.com

管理者としてコマンドプロンプトを実行する

コンピューターを"Stand By"モードにする必要がある小さなシャットダウンスケジューラプロジェクトを開発しています。私が使用しているコマンドは

Runtime.getRuntime().exec("cmd /c Powrprof.dll,SetSuspendState ");

このコマンドには、取得方法がわからない管理者権限が必要です。また、以前の回答を検索しているときに、elevate.exeを次のように使用できることがわかりました

Runtime.getRuntime().exec("c:/elevate Rundll32.exe Powrprof.dll,SetSuspendState ");

Elevate.exeはタスクを実行していますが、時間がかかりすぎているため、ソフトウェアの処理が遅くなっています。他に迅速な方法はありますか? Netbeans IDEを使用しています。

10
Rohan Kandwal

いくつかのオプションがあります

A. admin privでショートカットを作成します。

ショートカットが実行されますcmd /c Rundll32.exe Powrprof.dll,SetSuspendState

あなたのJavaコードはショートカットを実行します:

Runtime rt = Runtime.getRuntime();
rt.exec("cmd /c start \"\" \"myshortcut.lnk\"")

ショートカットアイコンを右クリック>プロパティ>詳細設定>管理者として実行

B. Javaプロセスを管理者として実行します

再度、ショートカットを作成し、管理者として実行するように設定します。生成されたすべてのプロセスには、管理者特権もあります。あなたのJavaコードが実行されます:

rt.exec("cmd /c Powrprof.dll,SetSuspendState")

C. JNAを使用してSetSuspendStateルーチンを直接呼び出す。 Javaプロセスには管理者特権(Bなど)が必要ですが、プロセスを生成する必要はありません。このような場合は、ソースコードを提供できます。

D.使用 wizmo ユーティリティwizmo quiet standby

9
mikeslattery
  Runtime.getRuntime().exec("runas /profile /user:Administrator \"cmd.exe /c Powrprof.dll,SetSuspendState\"");

コメントも参照してください

管理者権限なしで管理者として実行

10
TheWhiteRabbit

パラメータを追加/savecred

runas /profile /user:Administrator /savecred

パスワードを1回入力してください。今後のOSでは、パスワードの入力は求められません。

6
makarey