【问题标题】:Can java.awt.Desktop open a file with administrator privilege?java.awt.Desktop 可以用管理员权限打开文件吗?
【发布时间】:2013-10-05 20:38:06
【问题描述】:

我尝试使用Desktop 类打开文件,这是我的代码:

try{
    //filePath is an instance String variable
    desktop.open(new File(filePath));
}catch(IOException ex){
    System.out.println(ex.getMessage());
}

但这里的问题是文件必须用管理员打开才能运行。

例如;如果我们有这个命令

netsh wlan 启动托管网络

我将它保存在netsh.bat文件中,当我打开这个文件时,它会自动运行,但不幸的是; windows 需要管理员权限才能运行此命令。

我认为以管理员身份打开此文件 (neths.bat) 可以解决问题。

但是怎么做呢?,问题就在这里。

谢谢

【问题讨论】:

  • 考虑以管理员身份运行 Java 应用程序?
  • @PhilipWhitehouse:不是 Java 应用程序,而是计算机上需要权限的任何应用程序。对不起,迟到的评论:)
  • java 中无法以管理员身份运行。如果可以的话,请分享一下。我也在寻找以管理员权限运行命令提示符的方法。
  • Windows 带有一个名为runas.exe 的实用程序,java 可以生成它。或者使用 Java Native Interface 调用CreateProcessAsUser。或者设置一个环境变量来触发强制提升的兼容性填充程序。

标签: java batch-file


【解决方案1】:
Desktop.getDesktop().open(file);

SecurityException - 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件的读取访问权限,或者它拒绝 AWTPermission("showWindowWithoutWarningBanner") 权限,或者不允许调用线程创建子进程

例如

if(file.canRead()) {
    Desktop.getDesktop().open(file);
}

或者

ProcessBuilder pb = new ProcessBuilder("netsh.bat");
pb.directory(new File(currentDir + "\\com\\project"));
Process p = pb.start();
int status = p.waitFor();

【讨论】:

  • 谢谢,但这没有帮助,它不会运行。
猜你喜欢
  • 2011-08-31
  • 2018-02-18
  • 2012-08-14
  • 2018-11-12
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多