我正在尝试在我的 Java 应用程序中使用在此处找到的 RemoveDrive.exe。我在我的 JAR 中有它,我正在使用以下代码将它提取到一个临时文件中,但是当我尝试运行它时,我得到了一个IOException
which 说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 甚至都不会请求许可。
编辑:好像赏金快结束了,请参阅我的超级用户问题,它帮助我解决了这个问题......我将很快获得赏金并接受答案。