C++更改文件属性可以采用两种办法,一种是通过system()函数,另一种是通过SetFileAttributes()函数。

1.通过system()

通过这个函数可以调用系统命令来操作,用它来调用ATTRIB命令来操作。  

system文件夹设置为可写_c++

这就是这个命令的使用方法,可以通过system()来调用它来操作。

举例

#include <stdlib.h>

int main()
{
system("ATTRIB +r +S +h C:\\1.jpg");
return 0;
}

 2.通过SetFileAttributes()

通过system()是需要cmd去调用命令的,这个函数是一个API,可以脱离cmd,所以它更好用。

函数原型如下

BOOL SetFileAttributes(LPCTSTR lpFileName,DWORD dwFileAttributes);

举例

#include <Windows.h>

int main()
{
SetFileAttributes("C:\\1.exe",FILE_ATTRIBUTE_HIDDEN);
return 0;
}

这个函数的第一个参数是要操作的文件的路径,第二个参数是要更改的属性,这个是添加属性。

属性有很多,如下

——————————————————————————————————————————————————————

FILE_ATTRIBUTE_ARCHIVE

该文件是一个存档文件。应用程序使用此属性来备份或移除标记文件。

FILE_ATTRIBUTE_HIDDEN

该文件是隐藏的。它不包括在普通的目录列表。

FILE_ATTRIBUTE_NORMAL

该文件没有设置其他的属性。此属性仅在单独使用有效。

FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

该文件将不被内容索引服务编制索引。

FILE_ATTRIBUTE_OFFLINE

该文件的数据不是立即可用。此属性表明文件数据被物理移动到离线存储。此属性用于通过远程存储,分层存储管理软件。应用程序不应随意更改此属性。

FILE_ATTRIBUTE_READONLY

该文件是只读的。应用程序可以读取该文件,但不能写入或删除它。

FILE_ATTRIBUTE_SYSTEM

该文件是操作系统的一部分,或者完全由它使用。

FILE_ATTRIBUTE_TEMPORARY

该文件是被用于暂时存储。文件系统避免写入数据传回海量存储如果有足够的缓存内存可用,因为经常在应用程序删除后不久,这个句柄被关闭的临时文件。在这种情况下,该系统可以完全避免记录的数据。否则,在手柄关闭的数据将被写入。

如果想去除一个属性的话可以在第二个参数中这么写

#include <Windows.h>

int main()
{
SetFileAttributes("C:\\1.exe",-FILE_ATTRIBUTE_HIDDEN);
return 0;
}

前面加上一个减号,后面加上属性。

我们有的时候一下要加好几个属性(或者去除属性),我们不一定要重复调用函数,我们可以把多个属性用特定的符号"|"连接起来。

举例

#include <Windows.h>

int main()
{
SetFileAttributes("C:\\1.exe",FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY);
return 0;
}

如果程序运行了没效果可能是权限问题,可以试试以管理员身份运行。

好了,这就是更改文件属性了,谢谢各位,欢迎提建议!