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í)行將在此處開始并結(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)試 >“開始執(zhí)行(不調(diào)試)”菜單
// 調(diào)試程序: F5 或調(diào)試 >“開始調(diào)試”菜單
// 入門使用技巧:
// 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),若要再次打開此項(xiàng)目,請(qǐng)轉(zhuǎn)到“文件”>“打開”>“項(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++ priority_queue用法入門超詳細(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用法入門超詳細(xì)教程,需要的朋友可以參考下2023-12-12
C++?opencv學(xué)習(xí)之圖像像素的邏輯操作
圖像的像素操作包括讀寫操作、算數(shù)操作、邏輯運(yùn)算操作等,下面這篇文章主要給大家介紹了關(guān)于C++?opencv學(xué)習(xí)之圖像像素的邏輯操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
C++實(shí)現(xiàn)“隱藏實(shí)現(xiàn),開放接口”的方案
本文從一個(gè)實(shí)例講解了C++實(shí)現(xiàn)“隱藏實(shí)現(xiàn),開放接口”的方案,文章條理清新,內(nèi)容充實(shí),需要的朋友可以參考下2015-07-07
C語(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

