Windows延迟删除、重命名

简单介绍

延迟删除或重命名技术就是不立刻执行删除或重命名文件, 而是在计算机重启的时候才执行。简单说来,就是用Api函数MoveFileEx在注册表HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\ Control\ Session Manager\PendingFileRenameOperations中存放删除或者重命名操作的相关信息,然后windows重启时,由进程smss.exe(Session Manager Subsystem,会话管理子系统)来执行注册表中预先存放的删除或重命名操作项。

注:详细介绍可参看MSDN,搜索MoveFileEx函数,里面有挺详细介绍;也可参看其他网友发的博文给大家讲讲微软的延时删除技术

实例演示

#include <windows.h>
#include <iostream>
using namespace std;


int main( int argc, char** argv )
{
    //delete file
    if (MoveFileEx(TEXT(".\\33.txt"), NULL, MOVEFILE_DELAY_UNTIL_REBOOT))
    {
        cout << "successfully, delete file delay until reboot" << endl;
    }
    else
    {
        cout << "failed when delete file delay until reboot successfully with error "
            << GetLastError() << endl;
    }

    //rename file
    if (MoveFileEx(TEXT(".\\11.txt"), TEXT(".\\22.txt"), MOVEFILE_DELAY_UNTIL_REBOOT))
    {
        cout << "successfully, rename file delay until reboot" << endl;
    }
    else
    {
        cout << "failed when rename file delay until reboot successfully with error "
            << GetLastError() << endl;
    }

    return 0;
}

在当前目录下放一个11.txt,33.txt,运行以上程序,重启电脑即可看到相应效果。

猜你喜欢

转载自blog.csdn.net/s634772208/article/details/78080918