这篇文章主要介绍了visual studio 2022 编译出来的文件被删除 并监视目录中的文件变更,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
监视目录中的文件变更
因为编译出来的exe被删除(猜测被删除)了,所以就想验证下是不是,代码如下:
//参考:https://zhuanlan.zhihu.com/p/493850984
// 监控文件变化.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <Windows.h>
#include <winbase.h>
#include <fileapi.h>
#include <iostream>
#include <string>
#include <ctime>
#include <array>
// 宽字节字符串转多字节字符串
void W2C(wchar_t* pwszSrc, int iSrcLen, char* pszDest, int iDestLen)
{
::RtlZeroMemory(pszDest, iDestLen);
// 宽字节字符串转多字节字符串
::WideCharToMultiByte(CP_ACP,
0,
pwszSrc,
(iSrcLen / 2),
pszDest,
iDestLen,
NULL,
NULL);
}
int main()
{
bool watch_state{};
HANDLE hDirectory{ CreateFileA("D:\\C++\\OpenSSL_test2_3\\Debug\\",FILE_LIST_DIRECTORY,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL)};
BYTE* pBuf = new BYTE[2048];
if (NULL == pBuf)
{
std::cout << "内存申请失败!" << std::endl;
return 2;
}
FILE_NOTIFY_INFORMATION* pFileNotifyInfo = (FILE_NOTIFY_INFORMATION*)pBuf;
DWORD in_MemorySize{2048};
LPDWORD in_out_BytesReturned{ new DWORD{} };
char szTemp[MAX_PATH] = { 0 };
while (watch_state=ReadDirectoryChangesW(hDirectory, pFileNotifyInfo, in_MemorySize,true,
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE,
in_out_BytesReturned,
nullptr,
NULL))
{
W2C((wchar_t*)(&pFileNotifyInfo->FileName), pFileNotifyInfo->FileNameLength, szTemp, MAX_PATH);
time_t now = time(0);
if (GetLastError() == ERROR_INVALID_FUNCTION)
{
std::cout << "系统不支持!" << std::endl;
}
else if (watch_state == 0)
{
std::cout << "监控失败!" << std::endl;
}
else if (GetLastError() == ERROR_NOTIFY_ENUM_DIR)
{
std::cout << "内存溢出!" << std::endl;
}
else {
if (pFileNotifyInfo->Action == FILE_ACTION_ADDED)
{
std::cout << ctime(&now) << "新增文件 : " << szTemp << std::endl;
}
else if (pFileNotifyInfo->Action == FILE_ACTION_REMOVED)
{
std::cout << ctime(&now) << "删除文件 : " << szTemp << std::endl;
}
else if (pFileNotifyInfo->Action == FILE_ACTION_MODIFIED)
{
std::cout << ctime(&now) << "修改文件 : " << szTemp << std::endl;
}
else {
std::cout << ctime(&now) << pFileNotifyInfo->Action <<":" << szTemp << std::endl;
}
}
}
// 关闭句柄, 释放内存
::CloseHandle(hDirectory);
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
参考如下:https://zhuanlan.zhihu.com/p/493850984
visual studio 2022 编译出来的文件被删除
确定是被删除了,那么极有可能就是杀毒软件搞的鬼,然而因为特殊原因,我不能退出杀毒软件,所以对目录做了如下权限拒绝操作:
杀软一般都是以system用户组来运行的。这样就解决了,编译出来的文件也没用被删除掉。
到此这篇关于visual studio 2022 编译出来的文件被删除 并监视目录中的文件变更的文章就介绍到这了,更多相关visual studio 2022 编译文件被删除内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
织梦狗教程
本文标题为:visual studio 2022 编译出来的文件被删除并监视目录中的文件变更(示例详解)


基础教程推荐
猜你喜欢
- centos 7 vscode cmake 编译c++工程 2023-09-17
- C++实战之二进制数据处理与封装 2023-05-29
- 全面了解C语言 static 关键字 2023-03-26
- [c语言-函数]不定量参数 2023-09-08
- C语言编程C++旋转字符操作串示例详解 2022-11-20
- 带你深度走入C语言取整以及4种函数 2022-09-17
- [C语言]二叉搜索树 2023-09-07
- C语言实现宾馆管理系统课程设计 2023-03-13
- C语言 详解字符串基础 2023-03-27
- C++实现ETW进行进程变动监控详解 2023-05-15