首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的C++程序被Windows Defender阻止并删除

我的C++程序被Windows Defender阻止并删除
EN

Stack Overflow用户
提问于 2019-08-08 15:15:19
回答 2查看 2.6K关注 0票数 2

我已经写了一个小的C++程序,它检查Windows剪贴板的内容是否发生了变化,并打印出一种类型的内容。我使用Windows Visual Studio2019将程序编译成.exe文件,但它被Windows Defender阻止(文件被删除)。为什么会发生这种情况,如何防止呢?

当然,如果我打开Windows Defender并将我的文件标记为“不是病毒”,那么一切工作正常,但是如何防止客户计算机上的拦截?我需要创建一些“清单”文件吗?

如果这个问题很愚蠢,我很抱歉,我是C++世界的新手

代码语言:javascript
运行
复制
#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <Windows.h>
#include <conio.h>

int main()
{
    DWORD m_lastClipboardSequenceNumber = GetClipboardSequenceNumber();

    while (1) {
        Sleep(100);
        const DWORD newClipboardSequenceNumber = GetClipboardSequenceNumber();

        if (newClipboardSequenceNumber == m_lastClipboardSequenceNumber)
            continue;

        if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
            std::wcout << "CF_UNICODETEXT\n";
        }

        if (IsClipboardFormatAvailable(CF_HDROP)) {
            std::wcout << "CF_HDROP\n";
        }

        if (IsClipboardFormatAvailable(CF_BITMAP)) {
            std::wcout << "CF_BITMAP\n";
        }

        m_lastClipboardSequenceNumber = newClipboardSequenceNumber;
    }

    return 0;
}
EN

回答 2

Stack Overflow用户

发布于 2019-08-08 15:23:30

听起来你的问题根本不是C++的问题,更确切地说,是Windows Defender。据我所知,这里的问题是Windows Defender在默认情况下启动,不允许在没有管理员权限的情况下在计算机上运行来自未知来源的.exe文件。这是一个你不能远程修复的问题,否则这将极大地破坏Windows Defender的现有有用性,因为恶意攻击者可能只是利用它来运行他们的漏洞。

您可以针对您的用例采取可能修复此问题的步骤:如果您有权访问要在其上运行此操作的计算机,请尝试将您的分发方法添加到受信任的来源。或者,尝试使用密钥对其进行签名,并将该签名添加到trusted。

票数 2
EN

Stack Overflow用户

发布于 2019-08-08 15:24:26

我个人认为由于你观看剪贴板的方法太粗暴了,windows defender阻止了你的代码。

尝试monitoring clipboard部分并注册剪贴板更改的侦听器,看看是否发生了相同的事情。您的代码将更加复杂,因为您将需要创建一个用于接收消息的窗口循环,但我认为这样做是可以的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57407125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档