我正在尝试使用RemoveDrive.exe,在这里找到 http://www.uwe-sieber.de/drivetools_e.html,在我的 Java 应用程序中。我的 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();
UPDATE:如果我启用内置管理员帐户(net user administrator /active:yes
),从那里一切正常。但是,如果我右键单击并在我的标准帐户中以管理员身份运行,我仍然会收到错误,并且 UAC 甚至不请求权限。
EDIT:看来赏金即将结束,请参阅我的超级用户问题 https://superuser.com/questions/642626/cant-execute-from-temp-folder-in-windows-7?noredirect=1#comment805860_642626这帮助我解决了这个问题...我将很快给予赏金并接受答案。
在您的情况下,这可能不是问题,但某些防病毒程序会阻止临时文件夹内的可执行文件或脚本运行。不要创建临时文件,而是尝试将其放入用户目录中:
File rdExe = new File(System.getProperty("user.home") + "/.yourProgramName/rmvd.exe");
rdExe.getParentFile().mkdirs();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)