web-dev-qa-db-ja.com

Windowsで管理者としてjarファイルを実行します

私はここに同じことを尋ねるたくさんの質問があることを知っています、しかしそれらのどれでも私が望む答えを見つけられません、それはこれをするための特定の方法です。

私はそれを知っています(私が間違っている場合は私を訂正してください):

  1. これを行うには、WindowsUACメカニズムを操作する必要があります。
  2. これは純粋なJavaコードでは実行できません。バッチファイルまたはVBSスクリプトの助けが必要です。
  3. Java実行中のプロセスを昇格して、アプリケーションを再起動せずに管理者権限を取得することはできません。
  4. .jarファイルを昇格すると、JVMおよびJVMに依存する他のすべてのプロセスも昇格しますが、これはセキュリティ上の懸念を意味します。

アプリケーションを再起動したくないのですが、私の目標は、Javaアプリケーション(.jarファイル)が管理者権限で始まることです。それを取得する場合、ユーザーはいくつかのUACウィンドウをクリックする必要があります。わかりました。気にしないでください。

だから、私の質問(私は得ることができず、ほとんど同じことを尋ねている他の投稿を読んで特定の答えを得ることができません)。 どうすればよいですか?どのファイルをどのコンテンツで作成する必要がありますか?.batまたは.vbs)、これらのファイルを自分の中に入れることはできますか.jarファイル?何Javaコードを実装する必要がありますかアプリ?

解決策をできるだけ具体的にしてください。他の投稿の回答は、あいまいすぎるか(「可能な」解決策について話しますが、具体的で完全な解決策については言及しません)、説明が多すぎて特定の方法やコードを提供しません。

5
FiroKun

ええと、2つの選択肢があります。

最初:管理者としてCMDを開き、jarを開きます:

最初に管理者としてコマンドプロンプトを実行します。

Start > cmd > right click > run as administrator.

を使用してjarファイルを実行します

Java -jar c:\path\to\jar\file.jar

2番目:管理者権限を要求する.batファイルを作成します

@echo off
:: BatchGotAdmin (Run as Admin code starts)
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"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:: BatchGotAdmin (Run as Admin code ends)
:: Your codes should start from the following line
Java -jar c:\path\to\jar\file.jar

最後の行のみを変更する必要があることに注意してください。

。jarファイルと。batファイルの両方を同じ場所に配置しますフォルダを作成し、最後の行のみを次のように変更します。

Java -jar ./file.jar

このページ に基づいて回答してください。

お役に立てれば!

12
Edudjr

それよりも簡単です。デフォルトのクラスでjarファイルを作成し、Java -jar yourfile.jarを実行すると、アプリケーションが起動します。実行権限を付与します。これがすべて完了したら、右クリックするだけです。 jarファイルを選択し、「管理者として開始」(または同様のもの)を選択します。これで完了です。

ユーザーを支援するために、管理者権限が存在するかどうかを確認するクラスを作成します。そうでない場合は、ユーザーにプロンプ​​トを表示して、前述の手順を実行するように指示します。

0
mhyst