欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Windows延迟删除、重命名

程序员文章站 2022-06-08 23:53:55
...

简单介绍

延迟删除或重命名技术就是不立刻执行删除或重命名文件, 而是在计算机重启的时候才执行。简单说来,就是用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,运行以上程序,重启电脑即可看到相应效果。