visual?studio?2022?編譯出來的文件被刪除并監(jiān)視目錄中的文件變更(示例詳解)
更新時間:2022年08月29日 14:24:17 作者:狂自私
這篇文章主要介紹了visual?studio?2022?編譯出來的文件被刪除?并監(jiān)視目錄中的文件變更,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
監(jiān)視目錄中的文件變更
因為編譯出來的exe被刪除(猜測被刪除)了,所以就想驗證下是不是,代碼如下:
//參考:https://zhuanlan.zhihu.com/p/493850984 // 監(jiān)控文件變化.cpp : 此文件包含 "main" 函數。程序執(zhí)行將在此處開始并結束。 // #include <Windows.h> #include <winbase.h> #include <fileapi.h> #include <iostream> #include <string> #include <ctime> #include <array> // 寬字節(jié)字符串轉多字節(jié)字符串 void W2C(wchar_t* pwszSrc, int iSrcLen, char* pszDest, int iDestLen) { ::RtlZeroMemory(pszDest, iDestLen); // 寬字節(jié)字符串轉多字節(jié)字符串 ::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 << "系統(tǒng)不支持!" << std::endl; } else if (watch_state == 0) { std::cout << "監(jiān)控失敗!" << 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 或調試 >“開始執(zhí)行(不調試)”菜單 // 調試程序: F5 或調試 >“開始調試”菜單 // 入門使用技巧: // 1. 使用解決方案資源管理器窗口添加/管理文件 // 2. 使用團隊資源管理器窗口連接到源代碼管理 // 3. 使用輸出窗口查看生成輸出和其他消息 // 4. 使用錯誤列表窗口查看錯誤 // 5. 轉到“項目”>“添加新項”以創(chuàng)建新的代碼文件,或轉到“項目”>“添加現有項”以將現有代碼文件添加到項目 // 6. 將來,若要再次打開此項目,請轉到“文件”>“打開”>“項目”并選擇 .sln 文件
參考如下:https://zhuanlan.zhihu.com/p/493850984
visual studio 2022 編譯出來的文件被刪除
確定是被刪除了,那么極有可能就是殺毒軟件搞的鬼,然而因為特殊原因,我不能退出殺毒軟件,所以對目錄做了如下權限拒絕操作:
殺軟一般都是以system用戶組來運行的。這樣就解決了,編譯出來的文件也沒用被刪除掉。
到此這篇關于visual studio 2022 編譯出來的文件被刪除 并監(jiān)視目錄中的文件變更的文章就介紹到這了,更多相關visual studio 2022 編譯文件被刪除內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!