是否可以在 C++ 中创建隐藏的 txt 文件?

Posted

技术标签:

【中文标题】是否可以在 C++ 中创建隐藏的 txt 文件?【英文标题】:Is it possible to create a hidden txt file in C++? 【发布时间】:2015-10-16 15:49:22 【问题描述】:

我正在 Visual Studio 中构建一个应用程序。我需要创建一些要在 dll 中使用的文件,但我希望在查看文件夹时隐藏这些文件。如何在 C++ 程序中做到这一点?

以交互方式,您可以通过右键单击文件,选择“属性”并选择“隐藏”来标记文件已隐藏。问题是,如何在 C++ 程序中做一些等效的事情?

【问题讨论】:

隐藏是什么意思? 当您在文件中按鼠标右键出现菜单,选择属性并出现文件属性窗口,您可以在“属性”中选择“只读”或'隐藏'(这就是我想要的) 在 C 或 C++ 中没有可移植的方法来创建隐藏文件。 “隐藏文件”是 Windows 特有的功能。您必须使用一些特定于 Windows 的代码来标记文件已隐藏。 C 还是 C++?它们是两种不同的语言。听起来你正在使用 C++,所以坚持下去。 (答案可能恰好与 C 中的相同,但没有必要混淆。) msdn.microsoft.com/en-us/library/windows/desktop/…(真正从事 Windows 编程的人应该随时将其纳入答案) 【参考方案1】:

在 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);
 

【讨论】:

您忘记了#includes 和const @LightnessRacesinOrbit 我没有忘记 :-) 我不知道应该包括哪一个 :-) 所以如果你能提供帮助,我将不胜感激 :-) 我假设 &lt;windows.h&gt; 来自 this example's includes windows.h 不提供std::fstream。停止猜测并阅读文档!!!!!! 我假设 Alex 知道那个,只是不熟悉 windows api。【参考方案2】:
#include <Windows.h>

DWORD attributes = GetFileAttributes("MyFile.txt");
SetFileAttributes("MyFile.txt", attributes + FILE_ATTRIBUTE_HIDDEN)

【讨论】:

【参考方案3】:

选中“Hidden Items”复选框时,可以轻松查看使用 FILE_ATTRIBUTE_HIDDEN 创建的文件。真正隐藏文件的唯一方法是使用File System Filter Driver,它会在调用NtQueryDirectoryFile() 时从结果中消除文件(或文件/s 模式)记录。 Windows 文件资源管理器调用 NtQueryDirectoryFile(),因此使用此类驱动程序,即使选中“隐藏项”,文件也不会显示。

【讨论】:

【参考方案4】:

试试这个简单的技巧..

#include<iostream>
using namespace std;

int main()
system("echo >file.txt");
system("attrib +h +s file.txt");

return 0;

【讨论】:

以上是关于是否可以在 C++ 中创建隐藏的 txt 文件?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 C++ 中创建“朋友类”?

如何将在我的 Javascript 中创建的字符串数组传递给 C# 代码隐藏文件?

如何在 C++ 视觉中创建 UI [关闭]

是否可以使用 WINAPI 或 GDI+ 在 C++ 中创建 CommandLink 对话框?

用vbs创建隐藏的txt文件

如何使用 Perl 在 Windows 中创建 unicode 文件名