【问题标题】:Some files in system32 not visible/accessible for Java programsystem32 中的某些文件对于 Java 程序不可见/不可访问
【发布时间】:2013-08-02 03:18:55
【问题描述】:

我正在尝试编写一个 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,结果相同。这是怎么回事?

【问题讨论】:

    标签: java eclipse windows-7 exe


    【解决方案1】:

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

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

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

    【讨论】:

    • 确实,里面没有query.exe。哇,从来没有听说过这种行为。非常感谢。
    猜你喜欢
    • 2021-04-17
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2015-06-13
    • 1970-01-01
    相关资源
    最近更新 更多