访问隐藏的 ini 文件部分(文件名上的冒号)
Accessing hidden ini file sections (colon on file name)
我偶然发现了一段代码,它执行了一些我以前从未见过的事情,而且我在任何地方都找不到关于它的信息。
该程序创建一个常规 ini
文件并写入一些内容,没什么特别的。
文件创建后,代码进一步向文件写入数据,它转储整个 7MB 二进制文件到 ini
文件中,如下所示:
FileWrite(inifile:binary:$DATA)
就是这样。二进制文件被转储到文件中,我找不到访问它的方法。如果我右键单击该文件并转到属性,它会显示“大小:808 字节”和“磁盘大小:7mb”,很明显二进制文件就在某处。
我尝试做类似的事情并在 CMD 上写了这个:
notepad anyname.ini:WTH
记事本被执行并询问我是否要保存文件“anyname.ini:WTH”。我点击“是”,在那里写了几个字符,然后 保存了文件 。
确实创建了名为“anyname.ini”的文件,但打开后发现它是空的!
问题:这是什么行为,我如何访问这些数据?
在 NTFS 文件系统上,一个文件可以包含 1 个或多个 Alternate Data Streams。 ADS 由以下命名格式标识:
<filename>:<stream name>:<stream type>
每个 ADS 在逻辑上彼此独立,但在同一个文件中组合在一起。 CreateFile()
可以 return 将 HANDLE
传递给每个 ADS 的完全限定名称。
在您的示例中,inifile:binary:$DATA
在文件 inifile
中创建了一个名为 binary
且类型为 $DATA
的 ADS。在 Windows Explorer 中,它仅向您显示文件 main ADS 的大小,以及计算其中所有 ADS 的整个文件的总大小。
同样,anyname.ini:WTH
在文件 anyname.ini
.
中创建一个默认类型 $DATA
的名为 WTH
的 ADS
每个文件都有一个主ADS。例如,sample.txt
有一个名为 sample.txt::$DATA
的主 ADS - 一个没有名称的 $DATA
类型的 ADS。这是用户和应用程序通常使用的主要 ADS。
在 NTFS 系统中复制文件时,其关联的 ADS 会保留在该文件中。但是如果文件被复制到非NTFS系统,除了主ADS之外的所有ADS都会丢失。
有关详细信息,请参阅 Appendix A: NTFS Alternate Streams of MSDN's [MS-FSCC]: File System Control Codes 文档。
我偶然发现了一段代码,它执行了一些我以前从未见过的事情,而且我在任何地方都找不到关于它的信息。
该程序创建一个常规 ini
文件并写入一些内容,没什么特别的。
文件创建后,代码进一步向文件写入数据,它转储整个 7MB 二进制文件到 ini
文件中,如下所示:
FileWrite(inifile:binary:$DATA)
就是这样。二进制文件被转储到文件中,我找不到访问它的方法。如果我右键单击该文件并转到属性,它会显示“大小:808 字节”和“磁盘大小:7mb”,很明显二进制文件就在某处。
我尝试做类似的事情并在 CMD 上写了这个:
notepad anyname.ini:WTH
记事本被执行并询问我是否要保存文件“anyname.ini:WTH”。我点击“是”,在那里写了几个字符,然后 保存了文件 。
确实创建了名为“anyname.ini”的文件,但打开后发现它是空的!
问题:这是什么行为,我如何访问这些数据?
在 NTFS 文件系统上,一个文件可以包含 1 个或多个 Alternate Data Streams。 ADS 由以下命名格式标识:
<filename>:<stream name>:<stream type>
每个 ADS 在逻辑上彼此独立,但在同一个文件中组合在一起。 CreateFile()
可以 return 将 HANDLE
传递给每个 ADS 的完全限定名称。
在您的示例中,inifile:binary:$DATA
在文件 inifile
中创建了一个名为 binary
且类型为 $DATA
的 ADS。在 Windows Explorer 中,它仅向您显示文件 main ADS 的大小,以及计算其中所有 ADS 的整个文件的总大小。
同样,anyname.ini:WTH
在文件 anyname.ini
.
$DATA
的名为 WTH
的 ADS
每个文件都有一个主ADS。例如,sample.txt
有一个名为 sample.txt::$DATA
的主 ADS - 一个没有名称的 $DATA
类型的 ADS。这是用户和应用程序通常使用的主要 ADS。
在 NTFS 系统中复制文件时,其关联的 ADS 会保留在该文件中。但是如果文件被复制到非NTFS系统,除了主ADS之外的所有ADS都会丢失。
有关详细信息,请参阅 Appendix A: NTFS Alternate Streams of MSDN's [MS-FSCC]: File System Control Codes 文档。