在Windows中以管理员身份执行jar文件

Fir*_*Kun 5 java windows jar admin

我知道这里有很多问题要求相同,但在其中任何一个都找不到我想要的答案,这是一个特定的方法.

我知道(如果我错了,请纠正我):

  1. 为此,我需要与Windows UAC机制进行交互.
  2. 这不能用纯Java代码完成,它需要批处理文件或VBS脚本的帮助.
  3. 无需重新启动应用程序,就无法升级Java运行进程以获取管理员权限.
  4. 提升.jar文件也会提升JVM以及依赖于JVM的所有其他进程,这意味着安全问题.

我不想重新启动任何应用程序,我的目标是Java应用程序(.jar文件)从开始使用admin权限启动.如果为了得到它,用户将不得不点击一些UAC窗口,好吧,不在乎.

所以,我的问题(我无法得到和具体的答案阅读其他帖子几乎相同的事情).我怎样才能做到这一点?,我需要创建哪些文件,以及哪些内容?(.bat或.vbs),我可以将这些文件放在我的 .jar 文件中吗?,我需要在我的应用程序中实现哪些Java代码?

请尽可能使用该解决方案.其他帖子中的答案是或者过于模糊(谈论"可能的"解决方案,但没有提及具体和完整的解决方案),或解释太多而且没有给出具体的方法或代码.

Edu*_*djr 12

嗯,你有两个选择.

首先:以管理员身份打开CMD并打开jar:

首先以管理员身份运行命令提示

Start > cmd > right click > run as administrator.
Run Code Online (Sandbox Code Playgroud)

使用运行jar文件

java -jar c:\path\to\jar\file.jar
Run Code Online (Sandbox Code Playgroud)

第二步:创建一个要求管理员权限的.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
Run Code Online (Sandbox Code Playgroud)

请注意,您应该只更改最后一行.

我会将.jar和.bat文件放在同一个文件夹中,并且只将最后一行更改为:

java -jar ./file.jar
Run Code Online (Sandbox Code Playgroud)

根据此页面回答.

希望这可以帮助!


小智 0

比那更简单。使用默认类创建 jar 文件,这样如果执行 java -jar yourfile.jar,应用程序就会启动。给它执行权限。完成所有这些后,只需右键单击您的 jar 文件并选择“以管理员身份启动”(或类似的内容)。就是这样。

为了帮助用户,编写一个类来检查是否有管理员权限。如果没有,只需提示用户并指示他们执行上述操作。