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

新手上路,请多包涵

我知道这里有很多问题都在问同样的问题,但在任何一个问题中都找不到我想要的答案,这是执行此操作的特定方法。

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

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

我不想重新启动任何应用程序,我的目标是 Java 应用程序( .jar 文件)从一开始就具有管理员权限。如果要得到它,用户将不得不点击一些 UAC 窗口,好吧,不用管。

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

请尽可能提供最具体的解决方案。其他帖子的答案是,或者太模糊(谈论“可能”的解决方案,但不要提到具体和完整的解决方案),或者解释太多而没有给出具体的方法或代码。

原文由 FiroKun 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
1 个回答

那么,你有两个选择。

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

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

 Start > cmd > right click > run as administrator.

使用运行jar文件

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

第二:创建一个请求管理员权限的 .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

基于 此页面 的回答。

希望这可以帮助!

原文由 Edudjr 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏