首页 > 解决方案 > Windows Defender 阻止在 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();
        }

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

未经授权的更改被阻止 受控文件夹访问阻止 netbeans64.exe 进行更改。

通知详情
在此处输入图像描述

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

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

标签: javajava-8windows-10windows-defender

解决方案


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

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

如果它不起作用,那么它可能与 java 相关的东西以及可能以某种方式触发SecurityManager的案例或他们在文档中编写的其他机制MouseInfoSecurityException

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


推荐阅读