visual studio 2022 编译出来的文件被删除并监视目录中的文件变更(示例详解)

目录
  • 监视目录中的文件变更
  • 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 编译文件被删除内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Visual Studio 2022使用MinGW来编译调试C/C++程序的图文教程

    目录 一.创建项目 二.配置CMake 三.配置调试 Visual Studio的新版本已经可以像VSCode一样创建CMake项目了,但是默认的情况下是使用的Visual Studio编译器及调试器不包括MinGW中的工具集,参见下面的默认可选工具集: 本文就以实例来简单介绍一下VS2022中如何使用MinGW来编译.调试C/C++程序. 一.创建项目 首先,创建一个新项目: 然后,选择CMake项目: 填写项目名称,比如test 项目创建好后如下所示,由于笔者并未安装VS的Windows C

  • 基于C#的图表控件库 ScottPlot编译visual studio 2022

    目录 前言 C# 使用 ScottPlot 库 编译 ScottPlot 库 编译 运行 运行例程 小结 前言 基于 C# 的 图表控件库 ScottPlot,开源免费,可以用于开发一些上位机软件,如电压.电流波形的显示,开发[示波器]图形界面,可以显示一些图表.波形,总之功能比较的强大 ScottPlot 库的官方地址:https://github.com/ScottPlot/ScottPlot.git,里面提供了库相关的源代码,还有一些demo例程的源代码 C# 使用 ScottPlot 库

  • visual studio 2022 编译出来的文件被删除并监视目录中的文件变更(示例详解)

    目录 监视目录中的文件变更 visual studio 2022 编译出来的文件被删除 监视目录中的文件变更 因为编译出来的exe被删除(猜测被删除)了,所以就想验证下是不是,代码如下: //参考:https://zhuanlan.zhihu.com/p/493850984 // 监控文件变化.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include <Windows.h> #include <winbase.h> #in

  • visual studio code 编译运行html css js文件的教程

    运行html文件 1.添加插件扩展 2.安装 open in browser 3.在对应的html 文件处右击,选择open in default browser 或者直接 总结 到此这篇关于visual studio code 编译运行html css js文件的教程的文章就介绍到这了,更多相关visual studio code 运行html css js文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • Visual Studio 2022 Preview 使用 C++20 Module的详细过程

    作为C++20的一大特性,据说Module能够大大加快项目的编译速度,最近正好看到微软推出了Visual Studio 2022 预览版,随附了面向 C++20 的最新工具链,赶紧拿来体验一下. 体验项目很简单,就两个小文件: 1. hello.ixx export module mo.hello.cpp; export auto hello() { return "hello cpp module"; } 2. main.cpp import mo.hello.cpp; import

  • visual studio 2022一个不易发现的问题

    D:\Program Files(x86)\C++(从入门到放弃)\01 结构体定义和使用\x64\Debug\01 结构体定义和使用.exe (进程 23260)已退出,代码为 -1073741819. 昨天晚上学习C++的时候,学习到结构体,跟着老师写代码发现何老师一模一样的代码总是编不过去.没有打印信息,总是报错. 源代码如下: #include <iostream> #include <string> #include <ctime> using namespa

  • 使用 Visual Studio 2022 开发 Linux C++ 应用程序的过程详解

    使用 Visual Studio 2022 开发 Linux C++ 应用程序 使用 Visual Studio 2022 with WSL2 ! Visual Studio 2022 引入了用于 Linux C++ 开发的本机 WSL2 工具集,可以构建和调试 Linux C++ 代码,并提供了非常好的 Linux 文件系统性能.GUI 支持和完整的系统调用兼容性. CMake 是对使用 Visual Studio 2022 的 C++ 跨平台应用开发的推荐,因为它允许在 Windows.WS

  • Visual Studio 2022最新版安装教程(图文详解)

    目录 一.官网下载 二.安装启动 三.项目测试 四.背景图设置 一.官网下载 1.点击蓝色链接---->Visual Studio官网,进入之后是这个界面,选择社区版Community下载(社区版Community是对个人免费的,一共有三个版本),这里下载的是.exe 可执行文件 ,比较小,大约1.57M. 2.安装文件图示: 二.安装启动 1.下载好后,放到桌面,点开 2.点击继续,等待下载安装一段时间后,进入到下图页面,来进行配置工作负荷 3.找桌面应用和移动应用模块中的使用C++的桌面开发

  • Visual Studio 2022下载安装与使用超详细教程

    目录 前言 一.Windows安装Visual Studio 2022 1.1 下载地址 1.2 开始安装 1.3 打开Visual Studio 二.Visual Studio创建一个新的项目 2.1 一些准备工作 2.2 创建一个新的项目 2.3 创建C文件 前言 本文用于记录Visual Studio 2022的安装与使用,将持续进行更新.当前版本:V1,2021.12.04 一.Windows安装Visual Studio 2022 1.1 下载地址 首先登陆Visual Studio官

  • Visual Studio 2022下载及配置OpenCV4.5.5的详细过程

    目录 一.Visual Studio2022下载 二.OpenCV4.5.5下载 三.配置OpenCV环境变量 四. 在Visual Studio2022上配置OpenCV4.5.5 1.打开visual studio 2022创建新项目,选择C++控制台应用 2.点击顶部标签栏 项目 中 属性 3. 点击VC++目录中的包含目录,编辑,选择路径opencv\build\include,添加到我们的包含目录中 4.点击VC++目录中的库目录,编辑,选择路径opencv\build\x64\vc1

随机推荐