我正在Visual Studio中构建一个应用程序。我需要创建一些要在dll中使用的文件,但我希望在查看文件夹时隐藏这些文件。如何在C ++程序中执行此操作?
交互式地,您可以通过右键单击文件来标记文件已隐藏,选择"属性"并选择" Hidden"。问题是,如何从C ++程序中做出相同的事情?
答案 0 :(得分:9)
使用Windows API中的SetFileAttributes
功能:
#include <windows.h>
#include <fstream>
std::fstream file;
int main(){
file.open("myUnhiddenFile.txt",std::ios::out);
file << "This is my unhidden file, that I have created just now" ;
file.close();
wchar_t* fileLPCWSTR = L"myUnhiddenFile.txt"; // To avoid incompatibility
// in GetFileAttributes()
int attr = GetFileAttributes(fileLPCWSTR);
if ((attr & FILE_ATTRIBUTE_HIDDEN) == 0) {
SetFileAttributes(fileLPCWSTR, attr | FILE_ATTRIBUTE_HIDDEN);
}
return(0);
}
答案 1 :(得分:3)
使用FILE_ATTRIBUTE_HIDDEN创建的文件可以很容易地在选中“ Hidden Items”复选框时看到。真正隐藏文件的唯一方法是使用File System Filter Driver,无论何时调用NtQueryDirectoryFile(),它都会从结果中删除文件(或文件模式)记录。 Windows File Explorer会调用NtQueryDirectoryFile(),因此使用这种驱动程序,即使选中了“ Hidden Items”,该文件也不会显示。
答案 2 :(得分:2)
#include <Windows.h>
DWORD attributes = GetFileAttributes("MyFile.txt");
SetFileAttributes("MyFile.txt", attributes + FILE_ATTRIBUTE_HIDDEN)
答案 3 :(得分:0)
尝试这种简单的技术。
#include<iostream>
using namespace std;
int main(){
system("echo >file.txt");
system("attrib +h +s file.txt");
return 0;
}