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{}; std::string filePath; std::cout << "请输入目录路径,请确保目录路径正确,不需要输入末尾的斜杠:"; std::getline(std::cin, filePath); if (filePath[filePath.size() - 1] != '\\') { filePath += "\\"; } HANDLE hDirectory{ CreateFileA(filePath.c_str(),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| FILE_NOTIFY_CHANGE_ATTRIBUTES, 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) << "\t新增文件 : " << szTemp << std::endl; } else if (pFileNotifyInfo->Action == FILE_ACTION_REMOVED) { std::cout << ctime(&now) << "\t删除文件 : " << szTemp << std::endl; } else if (pFileNotifyInfo->Action == FILE_ACTION_MODIFIED) { std::cout << ctime(&now) << "\t修改文件 : " << szTemp << std::endl; } else if (pFileNotifyInfo->Action == FILE_ACTION_RENAMED_OLD_NAME) { std::cout << ctime(&now) << "\t重命名文件-旧名称: " << szTemp << std::endl; } else if (pFileNotifyInfo->Action == FILE_ACTION_RENAMED_NEW_NAME) { std::cout << ctime(&now) << "\t重命名文件-新名称: " << 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用户组来运行的。这样就解决了,编译出来的文件也没用被删除掉。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?