文件属性和删除只读文件,刷新

本文介绍了两种删除Windows系统中只读文件的方法:一是通过修改文件属性取消只读属性后删除;二是使用SHFileOperation函数进行删除。同时提供了相关API的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、删除只读文件

     DeleteFile删除文件:拒绝访问(5).

    文件为只读属性,不能用 DeleteFile直接删除两种处理方法

    详见MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/aa365535(v=vs.85).aspx

    FILE_ATTRIBUTE_READONLY:file that is read-only. Applications can read the file, but cannot write to it or delete it

    1:修改文件属性

     DWORD  dwAttribute=GetFileAttributes(Filename);
      if(dwAttribute  &  FILE_ATTRIBUTE_READONLY)
     {   
       dwAttribute   &=   ~FILE_ATTRIBUTE_READONLY;  
       SetFileAttributes(Filename,dwAttribute);
      }   

   SetFileAttributes(文件名, FILE_ATTRIBUTE_READONLY);    // 设定为只读
   SetFileAttributes(文件名, FILE_ATTRIBUTE_HIDDEN );       //设定为隐藏
   SetFileAttributes(文件名, FILE_ATTRIBUTE_SYSTEM);        //设定为系统
   SetFileAttributes(文件名, FILE_ATTRIBUTE_ARCHIVE);       //设定为保存
   SetFileAttributes(文件名, FILE_ATTRIBUTE_NORMAL);       //设定为一般 (取消前四种属性)

   或者使用 SetFileAttributes(文件名, FILE_ATTRIBUTE_NORMAL),取消所有的特定属性,再进行删除操作。

 

SHChangeNotify:更改属性后刷新

   if (!SetFileAttributes(path, FILE_ATTRIBUTE_SYSTEM))

return GetLastError();
   SHChangeNotify(SHCNE_ATTRIBUTES, SHCNF_PATH, directory, NULL);

详见MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx

   2:shfileoperation

  详见MSDN:https://msdn.microsoft.com/en-us/library/bb759795(VS.85).aspx

                  https://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx

                SHFILEOPSTRUCT op;
   memset(&op, 0, sizeof(op));
   op.fFlags =FOF_NOCONFIRMATION;                                    //不弹出确认对话框
   op.pFrom = Path;                                                               //文件路径
   op.wFunc = FO_DELETE;                                                    //操作
   FindClose(hFind);
   return SHFileOperation(&op);                                              //SHFileOperation(&op)不能用getlasterror来获得错误码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值