gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:28:32 24 4
gpt4 key购买 nike

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

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

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

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

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

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

最佳答案

好吧,你有两个选择。

首先:以管理员身份打开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

答案基于 this page .

希望这对您有所帮助!

关于java - 在 Windows 中以管理员身份执行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com