system32中的某些文件对于Java程序不可见/可访问

时间:2013-08-01 09:22:36

标签: java eclipse windows-7 exe

我正在尝试编写一个Java应用程序,该应用程序应该使用一些参数调用exe文件并处理输出。我在几个版本中尝试了Runtime.getRuntime()。exec()以及ProcessBuilder类,没有任何工作 - 尽管路径环境变量是正确的,它仍然无法找到文件。

出于想法,我尝试了以下内容:

File f = new File("C:\\Windows\\system32\\query.exe");
System.out.println(f.exists());

它说false

我想,也许路径出现了问题(反斜杠?大写?)并尝试了以下内容:

FileChooser chooser = new JFileChooser("C:\\Windows\\System32");
chooser.setFileHidingEnabled(false);
chooser.showOpenDialog(null);       
File f = chooser.getSelectedFile();
System.out.println(f.exists());

FileChooser中显示的文件(如果我在FileChooser中手动输入,结果再次为false)。但我已经仔细检查过, 那里。我现在已经打开了资源管理器窗口。我可以从cmd.exe中启动它。 where query打印C:\\Windows\\System32\\query.exe

我认为它可能与访问权限有关,但我将查询文件的安全设置与其他可见的安全设置进行了比较;他们是一样的。我以管理员身份运行Eclipse,结果相同。这是怎么回事?

1 个答案:

答案 0 :(得分:2)

我怀疑问题是JVM是作为32位进程执行的,操作系统是64位,意味着File System Redirector正在发生:

  

在大多数情况下,只要32位应用程序尝试访问%windir%\System32,访问权限就会重定向到%windir%\SysWOW64

如果您在C:\\Windows\\SysWOW64下检查query.exe不存在,请说明您正在目睹的行为。