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

My C++ program is blocked and deleted by Windows Defender

本文关键字:删除 Defender Windows C++ 程序 我的      更新时间:2023-10-16

我编写了一个小型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_UNICODETEXTn";
}
if (IsClipboardFormatAvailable(CF_HDROP)) {
std::wcout << "CF_HDROPn";
}
if (IsClipboardFormatAvailable(CF_BITMAP)) {
std::wcout << "CF_BITMAPn";
}
m_lastClipboardSequenceNumber = newClipboardSequenceNumber;
}
return 0;
}

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

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

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

尝试监视剪贴板部分并注册侦听器以进行剪贴板更改,以查看是否会发生同样的事情。您的代码将复杂得多,因为您需要创建一个窗口循环来接收消息,但我认为这样就可以了。