visual?studio?2022?編譯出來(lái)的文件被刪除并監(jiān)視目錄中的文件變更(示例詳解)
監(jiān)視目錄中的文件變更
因?yàn)榫幾g出來(lái)的exe被刪除(猜測(cè)被刪除)了,所以就想驗(yàn)證下是不是,代碼如下:
//參考:https://zhuanlan.zhihu.com/p/493850984 // 監(jiān)控文件變化.cpp : 此文件包含 "main" 函數(shù)。程序執(zhí)行將在此處開(kāi)始并結(jié)束。 // #include <Windows.h> #include <winbase.h> #include <fileapi.h> #include <iostream> #include <string> #include <ctime> #include <array> // 寬字節(jié)字符串轉(zhuǎn)多字節(jié)字符串 void W2C(wchar_t* pwszSrc, int iSrcLen, char* pszDest, int iDestLen) { ::RtlZeroMemory(pszDest, iDestLen); // 寬字節(jié)字符串轉(zhuǎn)多字節(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 << "內(nèi)存申請(qǐng)失敗!" << 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 << "內(nèi)存溢出!" << 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; } } } // 關(guān)閉句柄, 釋放內(nèi)存 ::CloseHandle(hDirectory); } // 運(yùn)行程序: Ctrl + F5 或調(diào)試 >“開(kāi)始執(zhí)行(不調(diào)試)”菜單 // 調(diào)試程序: F5 或調(diào)試 >“開(kāi)始調(diào)試”菜單 // 入門(mén)使用技巧: // 1. 使用解決方案資源管理器窗口添加/管理文件 // 2. 使用團(tuán)隊(duì)資源管理器窗口連接到源代碼管理 // 3. 使用輸出窗口查看生成輸出和其他消息 // 4. 使用錯(cuò)誤列表窗口查看錯(cuò)誤 // 5. 轉(zhuǎn)到“項(xiàng)目”>“添加新項(xiàng)”以創(chuàng)建新的代碼文件,或轉(zhuǎn)到“項(xiàng)目”>“添加現(xiàn)有項(xiàng)”以將現(xiàn)有代碼文件添加到項(xiàng)目 // 6. 將來(lái),若要再次打開(kāi)此項(xiàng)目,請(qǐng)轉(zhuǎn)到“文件”>“打開(kāi)”>“項(xiàng)目”并選擇 .sln 文件
參考如下:https://zhuanlan.zhihu.com/p/493850984
visual studio 2022 編譯出來(lái)的文件被刪除
確定是被刪除了,那么極有可能就是殺毒軟件搞的鬼,然而因?yàn)樘厥庠?,我不能退出殺毒軟件,所以?duì)目錄做了如下權(quán)限拒絕操作:
殺軟一般都是以system用戶組來(lái)運(yùn)行的。這樣就解決了,編譯出來(lái)的文件也沒(méi)用被刪除掉。
到此這篇關(guān)于visual studio 2022 編譯出來(lái)的文件被刪除 并監(jiān)視目錄中的文件變更的文章就介紹到這了,更多相關(guān)visual studio 2022 編譯文件被刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++開(kāi)發(fā)之CRC校驗(yàn)實(shí)例詳解
這篇文章主要介紹了C++開(kāi)發(fā)之CRC校驗(yàn)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07c++ priority_queue用法入門(mén)超詳細(xì)教程
priority_queue即優(yōu)先級(jí)隊(duì)列,它的使用場(chǎng)景很多,它底層是用大小根堆實(shí)現(xiàn)的,可以用log(n)的時(shí)間動(dòng)態(tài)地維護(hù)數(shù)據(jù)的有序性,這篇文章主要介紹了c++ priority_queue用法入門(mén)超詳細(xì)教程,需要的朋友可以參考下2023-12-12C++?opencv學(xué)習(xí)之圖像像素的邏輯操作
圖像的像素操作包括讀寫(xiě)操作、算數(shù)操作、邏輯運(yùn)算操作等,下面這篇文章主要給大家介紹了關(guān)于C++?opencv學(xué)習(xí)之圖像像素的邏輯操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11C++實(shí)現(xiàn)“隱藏實(shí)現(xiàn),開(kāi)放接口”的方案
本文從一個(gè)實(shí)例講解了C++實(shí)現(xiàn)“隱藏實(shí)現(xiàn),開(kāi)放接口”的方案,文章條理清新,內(nèi)容充實(shí),需要的朋友可以參考下2015-07-07C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)銀行模擬
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)銀行模擬的相關(guān)資料,通過(guò)此文希望大家能理解離散化的方法,希望能幫助到大家,需要的朋友可以參考下2017-08-08