Articles of ntfs

NTFS中的文件名是以什么编码存储的?

我刚开始使用一些编程来处理WinXP系统上非英文名称的文件名。 我已经做了一些关于unicode的推荐阅读,我想我已经有了基本的想法,但是有些部分对我来说还不是很清楚。 具体来说,什么编码(UTF-8,UTF-16LE / BE)是存储在NTFS中的文件名 (不是内容,而是文件的实际名称)? 是否有可能打开任何文件使用fopen(),这需要一个字符*,或者我别无select,只能使用wfopen(),它使用wchar_t *,大概需要一个UTF-16string? 我尝试手动喂养一个UTF-8编码的stringfopen(),例如。 unsigned char filename[] = {0xEA, 0xB0, 0x80, 0x2E, 0x74, 0x78, 0x74, 0x0}; // 가.txt FILE* f = fopen((char*)filename, "wb+"); 但是这是作为'ê°€.txt'出来的。 我的印象(这可能是错误的),一个UTF8编码的string就足以打开Windows下的任何文件名,因为我似乎隐约记得一些Windows应用程序传递(char *),而不是(wchar_t *),并有没问题。 任何人都可以点亮这个?

在文件之外存储元数据:现代Windows上的任何标准方法?

我的C# 应用程序将文件从远程文档pipe理系统同步到文件系统。 文档pipe理系统具有与每个文件相关联的元数据(上次审计的date,保密性,作者…),但不存储在每个文件中。 这些文件可以是任何东西(bmp,xwd,pdf,未知的二进制文件) 我想使这些元数据在本地Windows文件系统上可见。 但是我不能在每个文件中存储元数据。 例如,更改文件的保密性不能修改文件的校验和。 什么是最好的方式来存储这个元数据? 我听说过NTFS 扩展文件属性 ,是否适用于我的场景? 这个关于设置扩展文件属性的问题有所有答案都在讨论修改文件本身,我必须避免这个问题。 如果没有标准的解决scheme,那么我会将元数据存储在本地的SQLite数据库中。 但我更喜欢使用标准的解决scheme,以便其他应用程序(资源pipe理器,图库应用程序等)可以显示/修改他们理解的属性(如“作者”)

如何才能检测卷上已删除,已更改和已创build的文件?

我需要知道是否有一个简单的方法来检测只有在NTFS卷上删除,修改或创build的文件。 我用C ++编写了一个非现场备份程序。 在第一次备份之后,我检查每个文件的存档位以查看是否有任何更改,并仅备份已更改的文件。 此外,它从VSS快照备份以防止文件locking。 这似乎在大多数文件系统上都可以正常工作,但对于有很多文件和目录的文件系统来说,这个过程需要很长时间,而且备份通常需要一天以上才能完成备份。 我尝试使用更改日志来轻松检测NTFS卷上所做的更改,但更改日志会显示大量logging,其中大部分与创build和销毁的小临时文件有关。 另外,我可以获得文件名,文件引用号和父文件引用号,但无法获得完整的文件path。 父文件引用号是不知何故给你的父目录path。 编辑:这需要每天运行,所以在每次扫描开始时,它应该只logging自上次扫描以来发生的变化。 或者至less,从某个时间和某个date开始,应该有一种说法。

用Windows / NTFS附加到文件primefaces?

如果我从多个进程写入一个简单的文本日志文件,它们是否可以覆盖/损坏对方的条目? (基本上,这个问题在UNIX中是文件追加primefaces,而对于Windows / NTFS。)

在Windows文件系统中,每个文件都有一个预先计算的哈希值?

我想通过它的哈希search一个重复的文件。 为了提高性能,我想知道在NTFS / FAT文件系统中是否存储了每个文件的哈希/校验和。 如果有的话,我不必计算它们全部来search我的文件。 如果有,如何使用.NET访问它? 如果有帮助,它将是JPEG文件。 他们有校验吗?

使用NSIS检测目标卷是否为NTFS

我使用NSIS为需要在NTFS卷上运行的程序创build安装程序。 如何检测安装path是否在NTFS卷上,并相应地执行(显示帮助/警告消息)?

如何查看目录的子文件是否已更改

在Windows中,是否有一个简单的方法来判断一个文件夹是否有一个已经改变的子文件? 我validation了,文件夹上的最后修改date在子文件更改时不会更新。 有没有我可以设置,将修改此行为的registry项? 如果重要,我正在使用NTFS卷。 我最终想从C ++程序中获得这个能力。 以recursion方式扫描整个目录对我来说不起作用,因为该文件夹太大了。 更新:我真的需要一种方法来做到这一点,而没有一个进程在更改发生时运行。 所以安装一个文件系统监视器对我来说并不是最理想的。 Update2:归档位也将无法正常工作,因为它具有与上次修改date相同的问题。 该文件的归档位将被设置,但文件夹不会。

NTFS提供了哪些可靠性保证?

我想知道NTFS提供有关存储在其上的数据的可靠性保证? 例如,假设我正在打开一个文件,追加到最后,然后closures它,在这个操作过程中,电源随机熄灭。 我可以find完全损坏的文件? 我问,因为我只是有一个系统locking,发现两个被附加到完全清零的文件。 也就是说,大小正确,但是完全由零字节组成。 我以为这不应该发生在NTFS上,即使事情失败了。

在NTFS卷上快速find一组文件名,最好是通过MFT

我正在编写一个工具,查找Mac和Windows的iTunes资料库的丢失文件。 在Mac上,我可以使用精彩的“CatalogSearch”function快速find文件。 然而,在Windows上,似乎没有用于通过文件名进行search的OS API(或者在那里?)。 一些谷歌search后,我了解到有工具(如TFind , Everything )直接读取NTFS目录并扫描它以查找名称的文件。 我也想这样做,但不必从头开始(尽pipe我过去已经写了不less的磁盘工具,但我从来没有精力去挖掘NTFS)。 我想知道是否有作为一个.dll,可以作为一个.dll的现成的库,这会给我这个searchfunction:传入一个文件名,找回它的path。 或者,Windows索引服务呢? 至less当我在最近安装的XP Home系统上试过这个时, 开始菜单下的search操作实际上会扫描所有目录,这表明它没有完整的数据库。 由于我不是Windows用户,我想知道为什么这不起作用。 最后,我需要的完整解决scheme是:我有一个要查找的文件名列表,我需要search整个磁盘(或使用数据库)的代码,以便一次性获得所有结果。 例如,search不应该为我正在查找的每个文件启动新的全面扫描。 这就是为什么我认为MFT的方式是最佳的,因为它可以快速迭代所有名称,比较每个名单。

直接从文件系统获取文件校验和,而不是显式计算

我猜测一个典型的文件系统往往会保留它pipe理的每个文件的校验和/ CRC /哈希,所以它可以检测到文件损坏。 这猜测是正确的吗? 如果是,有没有办法访问它? 我主要对Windows和NTFS感兴趣,但对其他平台的评论也会受到欢迎…语言在这一点上是不重要的,但是如果可能的话,我想避免汇编。 谢谢。