コンピューターを"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を使用しています。
いくつかのオプションがあります
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
Runtime.getRuntime().exec("runas /profile /user:Administrator \"cmd.exe /c Powrprof.dll,SetSuspendState\"");
コメントも参照してください
パラメータを追加/savecred
runas /profile /user:Administrator /savecred
パスワードを1回入力してください。今後のOSでは、パスワードの入力は求められません。