java - Windows Defender 阻止在 Java 中获取指针位置

标签 java java-8 windows-10 windows-defender

我使用下面的代码来获取指针位置,但 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.

通知详情
enter image description here

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

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

最佳答案

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

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

如果它不起作用,那么它可能与 java SecurityManager 相关,并且 MouseInfo 可能以某种方式触发 SecurityException 或他们在 documentation 中编写的其他机制。

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

关于java - Windows Defender 阻止在 Java 中获取指针位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60627528/

相关文章:

uwp - Macbook 上的 Windows 10 上的错误 DEP0700 : Registration of the app failed.(双启动)

asp.net-mvc-4 - 安装windows 10后ASP.NET 4.5尚未注册

Java泛型——桥接方法

java - 在 Google App Engine - java 中迭代大量记录并聚合整数属性

java - List中有没有一种reverse_iterator,只是为了反转List? (首选Java8流方案)

Java Stream : how to pass Set to Stream. of() 并在每个元素上调用方法?

java - 基于 Java 8 中的属性从对象列表中删除重复项

java - 1. 扫描当前(相对于下一个)行位置。 2.扫描线X(Java初学者)

Java:打印 switch 语句的选项

使用 Hyper-V 的 Windows 10 上的 Vagrant 错误