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 編譯文件被刪除內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Visual Studio 2022最新版安裝教程(圖文詳解)
- Visual Studio自定義項目模版
- C++實現酒店管理系統
- C++之內存泄漏排查詳解
- 在運行時編輯代碼的 .NET 熱重載的操作方法