C/C++ 文件属性设置(隐藏、只读、加密等)

时间:2024-03-08 10:55:35
在MSDN中,文件总共有15种属性,根据磁盘的分区格式不同,文件的属性也会不同。
  1. GetFileAttributes 获取文件属性函数的返回值

 

返回字段

返回值

属性类型

FILE_ATTRIBUTE_READONLY

1

只读

FILE_ATTRIBUTE_HIDDEN

2

隐藏

FILE_ATTRIBUTE_SYSTEM

4

系统

FILE_ATTRIBUTE_DIRECTORY

16

目录

FILE_ATTRIBUTE_ARCHIVE

32

存档

FILE_ATTRIBUTE_DEVICE

64

保留

FILE_ATTRIBUTE_NORMAL

128

正常

FILE_ATTRIBUTE_TEMPORARY

256

临时

FILE_ATTRIBUTE_SPARSE_FILE

512

稀疏文件

FILE_ATTRIBUTE_REPARSE_POINT

1024

超链接或快捷方式

FILE_ATTRIBUTE_COMPRESSED

2048

压缩

FILE_ATTRIBUTE_OFFLINE

4096

脱机

FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

8192

索引

FILE_ATTRIBUTE_ENCRYPTED

16384

加密

FILE_ATTRIBUTE_VIRTUAL

65536

虚拟

 

橙色标记的属性为Windows系统中文件的公有属性,其中“只读”、“隐藏”、“系统”、“存档”为文件的四种基本属性。compressed,content_indexed,encrypted只存在于NTFS分区中。

文件去掉全部属性后(四种基本属性),将自动标记为normal。同时具有system和hidden属性的文件会在系统中彻底隐形,这也是病毒常用的伎俩。

commpressed和encrypted不能共存。默认情况下文件都有content_indexed属性

 

  2.SetFileAttributes 设置文件属性函数

设置文件属性: SetFileAttributes(文件名, 属性值)

SetFileAttributes(文件名, FILE_ATTRIBUTE_READONLY); // 设定为只读

SetFileAttributes(文件名, FILE_ATTRIBUTE_HIDDEN );       //设定为隐藏

SetFileAttributes(文件名, FILE_ATTRIBUTE_SYSTEM);      //设定为系统

SetFileAttributes(文件名, FILE_ATTRIBUTE_ARCHIVE);   //设定为保存

SetFileAttributes(文件名, FILE_ATTRIBUTE_NORMAL);     //设定为一般 (取消前四种属性)

设定二种以上的属性:

  • 设定为只读 + 隐藏

SetFileAttributes(文件名, FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN); 

  • 设定为只读 + 隐藏 + 系统 + 保存

SetFileAttributes(文件名, FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN _
| FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_ARCHIVE);

  • 取消所有设定

SetFileAttributes(文件名, FILE_ATTRIBUTE_NORMAL);

 

-成功返回1-65536 ,错误返回0;

-#include <windows.h> 头文件;