中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用visual?studio2022監視目錄中的文件變更

發布時間:2022-08-29 16:29:26 來源:億速云 閱讀:188 作者:iii 欄目:開發技術

這篇“怎么使用visual studio2022監視目錄中的文件變更”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么使用visual studio2022監視目錄中的文件變更”文章吧。

監視目錄中的文件變更

因為編譯出來的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 文件

visual studio 2022 編譯出來的文件被刪除

確定是被刪除了,那么極有可能就是殺毒軟件搞的鬼,然而因為特殊原因,我不能退出殺毒軟件,所以對目錄做了如下權限拒絕操作:

怎么使用visual?studio2022監視目錄中的文件變更

怎么使用visual?studio2022監視目錄中的文件變更

殺軟一般都是以system用戶組來運行的。這樣就解決了,編譯出來的文件也沒用被刪除掉。

以上就是關于“怎么使用visual studio2022監視目錄中的文件變更”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五家渠市| 永济市| 邹平县| 江城| 临泉县| 东阳市| 法库县| 松江区| 斗六市| 墨竹工卡县| 南宫市| 大理市| 新蔡县| 拜城县| 綦江县| 沾化县| 东海县| 咸阳市| 麟游县| 大埔区| 西贡区| 奉化市| 扎鲁特旗| 云梦县| 庆阳市| 姚安县| 昌吉市| 内丘县| 田林县| 英吉沙县| 彰化县| 安西县| 潮安县| 墨脱县| 固原市| 通海县| 赣州市| 清水河县| 辽阳县| 汶川县| 郸城县|