我目前正在开发一个学习工具,它组合了几个便携式系统管理工具(主要是 sysinternal 工具)。我有一个带有 JButton 的简单框架。
我想做什么?- 除了我的 java 文件,我还有一个需要提升权限才能运行的 exe 文件(例如,我们使用 config.exe)。
用户单击按钮后,我该如何执行此文件?
编辑:我刚刚找到了另一种方法。我从我的 jar 文件中创建了一个 exe,然后转到兼容性选项卡并选中“始终以管理员身份运行”谢谢您的所有帮助。
我目前正在开发一个学习工具,它组合了几个便携式系统管理工具(主要是 sysinternal 工具)。我有一个带有 JButton 的简单框架。
我想做什么?- 除了我的 java 文件,我还有一个需要提升权限才能运行的 exe 文件(例如,我们使用 config.exe)。
用户单击按钮后,我该如何执行此文件?
编辑:我刚刚找到了另一种方法。我从我的 jar 文件中创建了一个 exe,然后转到兼容性选项卡并选中“始终以管理员身份运行”谢谢您的所有帮助。
首先找到exe文件所在的目录,然后创建一个文本文件,命名为
“Your_Exe_File_Name”.exe.manifest
只需将以下内容放入文件并保存即可。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.1.1.1"
processorArchitecture="X86"
name="MyApp.exe"
type="win32"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
现在在你的java代码中使用它来调用exe。它将自动以管理员权限调用。
Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2",).start();
InputStream is = process.getInputStream();//Get an inputstream from the process which is being executed
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);//Prints all the outputs.Which is coming from the executed Process
}
我想这对你会有帮助。
看到您正在尝试运行exe
文件,我会假设这是 Windows。
在java中执行外部命令的标准方式是.exec
命令:
Runtime.getRuntime().exec("path\to\config.exe");
现在,要config.exe
以管理员身份运行,您需要做的是将其设置为从 Windows 以管理员身份运行。在资源管理器中右键单击该文件,然后选择Properties
. 选择Compatibility
选项卡并检查Run this program as administrator
底部附近。现在,每当程序运行时,它都会在运行前要求提升权限。