我目前正在开发一种研究工具,它将几种便携式系统管理工具(主要是sysinternal工具)组合在一起。我有一个带JButton的简单框架。
我想做什么? - 与我的java文件一起,我有一个exe文件(例如,让我们使用config.exe),需要提升权限才能运行。
用户点击按钮后如何执行此文件?
编辑:我刚刚找到另一种方法来做到这一点。我从我的jar文件中创建了一个exe并转到兼容性选项卡并选中“Always Run as admin”感谢您的帮助。答案 0 :(得分:1)
首先找到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
}
我认为这会对你有所帮助。
答案 1 :(得分:0)
当您尝试运行exe
文件时,我认为这是Windows。
在java中执行外部命令的标准方法是.exec
命令:
Runtime.getRuntime().exec("path\to\config.exe");
现在,要让config.exe
以管理员身份运行,您需要做的是将其设置为从Windows以管理员身份运行。在资源管理器中右键单击该文件,然后选择Properties
。选择Compatibility
标签,然后选中底部附近的Run this program as administrator
。现在,无论何时运行该程序,它都会在运行之前要求提升权限。