我的C++程序被Windows Defender阻止和删除
My C++ program is blocked and deleted by 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_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 正在阻止您的代码。
尝试监视剪贴板部分并注册侦听器以进行剪贴板更改,以查看是否会发生同样的事情。您的代码将复杂得多,因为您需要创建一个窗口循环来接收消息,但我认为这样就可以了。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 删除指向指针的指针是运行时错误吗
- 将指针设置为"nullptr"并不能防止双重删除?
- 为什么示例代码访问IUnknown中已删除的内存
- 如何通过 getter 函数删除矢量的元素?
- 从控制台中删除最后打印的元素
- C++中的线程安全删除
- 如何从存储在std::映射中的std::集中删除元素
- 我的C++程序被Windows Defender阻止和删除