Java - 使用管理员权限执行exe

时间:2014-04-15 12:12:11

标签: java admin-rights

我目前正在开发一种研究工具,它将几种便携式系统管理工具(主要是sysinternal工具)组合在一起。我有一个带JButton的简单框架。

我想做什么? - 与我的java文件一起,我有一个exe文件(例如,让我们使用config.exe),需要提升权限才能运行。

用户点击按钮后如何执行此文件?

编辑:我刚刚找到另一种方法来做到这一点。我从我的jar文件中创建了一个exe并转到兼容性选项卡并选中“Always Run as admin”感谢您的帮助。

2 个答案:

答案 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。现在,无论何时运行该程序,它都会在运行之前要求提升权限。