Win32 删除非空目录

Win32 删除非空目录

DeleteFile();  //这是删除文件的win32 API
RemoveFile();  //这是删除空目录的win32 API(注意,如果目录不为空的话,这个函数将执行失败)

如果目录不为空的话,我知道的有两种方法删除:

1.调用命令行

system("rmdir /s /q dirname");  //dirname是要删除的目录名称,这种方式,在使用MFC程序的时候出闪过一个CMD的窗口
/s是级联删除  /q 是不提示(在命令行下操作的话,如果不加这个开关,会有提示确认是否删除目录,而在程序中不允许停下)

2.使用win32 API
 //删除当前目录下的tempDir目录(子目录也将一并删除)

 SHFILEOPSTRUCT FileOp;
 FileOp.fFlags = FOF_NOCONFIRMATION;
 FileOp.hNameMappings = NULL;
 FileOp.hwnd = NULL;
 FileOp.lpszProgressTitle = NULL;
 FileOp.pFrom = ".\\tempDir";
 FileOp.pTo = NULL;
 FileOp.wFunc = FO_DELETE;
 SHFileOperation(&FileOp);

此处有一个地方要留心一下,就是FileOp.pFrom这个参数,它使用的字符串一定是要'\0'结尾的,这个地方使用".\\tempDir",这个字符串默认的结束字符就是'\0',所以如果存在这个目录或者文件的话,一定可以将其删除,如果像下面这样写的话就会出错:
std::string delPath = ".\\tempDir";
...
FileOp.pFrom = delPath.c_str();  // 此时字符串没有以'\0'结尾,所以删除的时候会出错

C:\Windows(或其他系统盘符)是系统保护文件夹,因此不允许直接删除。但是如果你确实想要删除一个空文件夹,可以按照以下步骤进行操作: 1. 首先,确保你有管理员权限。只有管理员才能删除系统文件夹。 2. 打开Windows资源管理器,进入需要删除的文件夹。 3. 检查文件夹中是否包含需要保留的文件或子文件夹。如果有,请先将它们移动到其他位置或删除。 4. 点击文件夹上方的“查看”选项卡,勾选“隐藏项目”栏下的“隐藏受保护的操作系统文件”选项。 5. 然后转到“开始”菜单,搜索并打开“命令提示符”(或cmd)。 6. 在命令提示符窗口中,输入命令“cd C:\Windows”(将“C”替换为你的系统盘符),按下回车键。 7. 输入命令“takeown /f 文件夹名”(将“文件夹名”替换为要删除的文件夹名称),按下回车键。这将获取对文件夹的所有权。 8. 输入命令“icacls 文件夹名 /grant 用户名:F /t”(将“文件夹名”替换为要删除的文件夹名称,将“用户名”替换为你的用户名),按下回车键。这将授予你对文件夹的完全访问权限。 9. 输入命令“rd /s /q 文件夹名”(将“文件夹名”替换为要删除的文件夹名称),按下回车键。这将删除文件夹及其内容。 10. 等待命令执行完毕,文件夹将被成功删除。 请注意,删除系统文件夹可能会导致系统不稳定或不可用。在执行此操作之前,请确保你知道自己在做什么,并备份重要数据。此外,建议在删除系统文件夹前咨询专业人士的意见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值