【发布时间】:2013-09-01 15:19:57
【问题描述】:
我正在尝试在我的 Java 应用程序中使用 RemoveDrive.exe,found here。我在我的 JAR 中有它,我使用以下代码将它提取到一个临时文件中,但是当我尝试运行它时,我得到一个 IOException,上面写着 CreateProcess error=5, Access is denied。该程序通常不需要管理员权限。关于可能导致问题的任何想法?
File RDexe = File.createTempFile("rmvd", ".exe");
InputStream exesrc = (InputStream) GraphicUI.class.getResource("RemoveDrive.exe").openStream();
FileOutputStream out = new FileOutputStream(RDexe);
byte[] temp = new byte[1024];
int rc;
while((rc = exesrc.read(temp)) > 0)
out.write(temp, 0, rc);
exesrc.close();
out.close();
RDexe.deleteOnExit();
// run executable
Runtime runtime = Runtime.getRuntime();
System.out.println(RDexe.getPath() + " " + "F:\\" + " -b -s");
Process proc = runtime.exec(RDexe.getPath() + " " + "F:\\" + " -b");
InputStream is = proc.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line; boolean ejected = false;
while((line = reader.readLine()) != null)
if(line.equalsIgnoreCase("failed")) ejected = false;
else if(line.equalsIgnoreCase("success")) ejected = true;
reader.close();
is.close();
更新:如果我启用内置管理员帐户 (net user administrator /active:yes),一切正常。但是,如果我在标准帐户中右键单击并以管理员身份运行,我仍然会收到错误消息,并且 UAC 甚至都不会请求权限。
编辑: 看来赏金已接近尾声,请参阅my SuperUser question,它帮助我解决了这个问题……我将很快授予赏金并接受答案。
【问题讨论】:
-
@demongolem 我知道关于那个问题的信息。虽然它并不能帮助我解决我的问题
标签: java windows usb ioexception