Windows 后卫阻止在 Java 中获取指针位置

Windows Defender Blocks getting Pointer location in Java

我正在使用下面的代码来获取指针位置,但是 windows 10 在我 运行 应用程序时阻止了访问。

 while (true) {
        //Thread.sleep(100);
        try {
            System.out.println("(" + MouseInfo.getPointerInfo().getLocation().x
                    + ", "
                    + MouseInfo.getPointerInfo().getLocation().y + ")");
        } catch (Exception e) {
            e.printStackTrace();
        }

错误:
通知面板中弹出一条通知:

Unauthorized Changes blocked Controlled folder access blocked netbeans64.exe from making changes.

通知详情

在访问指针位置之前它工作正常。 e.printstacktrace() 没有抛出异常。我该怎么办?

更新
如果我在 Defender 设置中允许它,我就可以访问指针位置。如何从 Java 启用它?它将引导每个使用该应用程序的人从似乎不太安静的 Defender 设置中允许它。有什么想法吗?

我曾经遇到过这个问题。事实证明,Windows 上的某些文件夹被视为特殊文件夹,当应用以某种方式修改时,会引发此警报。用户的 Documents 文件夹是这些文件夹之一(图片、下载和 C:\Windows 等可能也是)。从您的屏幕截图我们看到您的应用程序项目 运行s 在 %userprofile%/Documents/NetBeansProject... 目录中。如果您 运行 通过构建 system/IDE 应用程序,它可能会创建一些临时文件。这被 Defender 捕获并阻止了。

只需尝试...将项目移出 Documents 文件夹。 (当我遇到这个问题时它对我有用)。

如果它不起作用,那么它可能与 java SecurityManager 相关,并且 MouseInfo 可能以某种方式触发 SecurityException 或其他一些情况他们在 documentation

中所写的机制

无论如何,如果有帮助,请提供信息。