gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:32 24 4
gpt4 key购买 nike

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

最佳答案

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

In most cases, whenever a 32-bit application attempts to access %windir%\System32, the access is redirected to %windir%\SysWOW64.

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

关于java - system32 中的某些文件对于 Java 程序不可见/不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com