Windows Defender已阻止并删除了我的C ++程序

时间:2019-08-08 07:15:18

标签: c++ windows windows-defender

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

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

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

#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;
}

2 个答案:

答案 0 :(得分:2)

我个人认为,由于您观看剪贴板的方法过于滥用,因此Windows Defender会阻止您的代码。

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

答案 1 :(得分:0)

听起来像您的问题根本就不是C ++,更确切地说是Windows,更确切地说是Windows Defender。据我所知,这里的问题是Windows Defender默认情况下启动,不允许未知来源的.exe文件在没有管理员特权的情况下在计算机上运行。这是一个您无法远程解决的问题,否则将严重破坏Windows Defender的现有功能,因为恶意行为者可能会利用它来运行其漏洞利用程序。

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