这可能是一个有点愚蠢的问题,但我一直无法在任何地方找到答案。有没有办法找出更改日志中的最后一条记录是什么?当我们第一次运行FSTCL查询时,枚举所有记录花费的时间太长。有没有简单的方法可以找到它? 最佳答案 FSCTL_QUERY_USN_JOURNAL返回将用于下一条记录的USN(NextUsn)。最后一条记录通常是NextUsn负1。为了安全起见,您可以使用FSCTL_ENUM_USN_DATA和USN过滤来查找NextUsn负1,如果它不存在,则查找NextUsn负2,然后是负4,等等。
Windows有一个WinSXS目录,用于存储某些系统文件的旧版本,以备您要回滚服务包或类似文件时使用。(这些存储为硬链接(hardlink),因此那里的许多文件都指向与当前系统文件相同的磁盘区域)。它还有一个卷快照服务,可以保存整个NTFS卷的旧版本的快照。我的理解是,这被想要查看整个卷内容的瞬时快照的备份工具之类的东西使用。我可以看出它们是完全不同的东西,并且出于不同的目的,但它仍然看起来像是重复。谁能解释为什么这些功能中的一个或另一个不能满足所有需求? 最佳答案 WinSxS不是旧系统文件的备份。它是DllHell的解决方案问
有一个正在从多个位置使用的共享网络驱动器。无法使用网络驱动器中的某些文件。在尝试打开它们时,我收到错误“文件名太长”。我注意到,当我在命令提示符下使用subst将网络驱动器映射到本地驱动器时,文件打开得很好。这让我相信路径存在一些问题。然后,我在PowerShell中使用一个命令来获取所有此类违规路径的列表,我还遇到了一个批量文件重命名实用程序,该实用程序使我能够缩短文件名以使文件再次可访问。但这仍然不是一个优雅的解决方案,因为文件的数量太多了。如果您想知道为什么我不要求每个人都将网络驱动器映射到本地驱动器,那有两个原因行不通。1.我们需要将单个文件的链接通过电子邮件发送给许多不同的用
我正在尝试找到一种方法,让系统在USNChangeJournal中有新条目时告诉我,以跟踪对文件和目录所做的修改NTFS卷(服务器2008/2012)。这样我就不必不断地轮询日志,只需让我的线程休眠,直到我在有新的更改事件时收到通知。但是,有没有这样的中断呢?FSCTL_QUERY_USN_JOURNAL函数没有具体提及中断(事件、通知),我也无法找到另一种使用不太密集的轮询和比较技术来实现此目的的方法。我不是铁杆程序员,所以可能有更简单的方法将这些函数与我不知道的中断联系起来。我能否找出USN变更日志的存储位置,并使用另一个可以生成并在变更时中断的进程查看该文件?https://ms
我对以下情况感到困惑。似乎我有一个文件,在所有Windows工具中看起来完全正常,但没有出现在Cygwin的任何目录列表中。但是,如果明确命名,它是可访问的。观察:$ls-lAtotal0$ls-lAmagic.pdf-rwxrwx---+1KonstantinNone1647075Oct112017magic.pdf$/cygdrive/c/Windows/System32/cmd/CdirVolumeindriveGisToshibaBackupVolumeSerialNumberisE692-2E8CDirectoryofG:\test20/04/201811:49.20/04/
在非特权用户上下文中,如何查询NTFS特殊文件的大小?大小对我来说是最重要的元数据,但如果我能得到通常在WIN32_FIND_DATA中找到的所有内容,我就不会介意了。我指的NTFS特殊文件是(除其他外):$Mft、$MftMirr、$LogFile、$BadClus等等。为了打开MFT,我必须获得某些权限,打开卷然后解析MFT。这样就结束了。而且似乎不可能通过名称打开这些文件(对于其中的大多数),这排除了NtQueryInformationFile()和GetFileInformationByHandle()。或者可能存在我未尝试过的标志组合,可以以某种方式打开它们以查询文件信息?最
我一直在查看Windows7symboliclinks(使用mklink)[编辑-WindowsVista也支持它们,WindowsServer2003,WindowsServer2008].是否可以通过编程方式确定文件夹是否为符号链接(symboliclink)? 最佳答案 使用GetFileAttributes并检查FILE_ATTRIBUTE_REPARSE_POINT.预计到达时间:由于您现在已经阐明您是从C#执行此操作,因此您可以在本地执行此操作:System.IO.File.GetAttributes("some/pat
我正在开发类似SMB的网络重定向器。我想测试各种文件I/O以比较NTFS或SMB实现。我要测试的是,创建文件读取、写入文件删除文件重命名文件设置,通过句柄获取文件信息等等如果能测量每个I/O持续时间就更好了。有没有我可以使用的程序? 最佳答案 如果您正在开发文件系统驱动程序或使用某些重定向器驱动程序(我们的回调文件系统或替代品),您可以使用IFSTesttool检查您的实现是否正确。 关于windows-是否有用于在Windows中测试各种文件I/O的应用程序?,我们在StackOver
我正在编写一个程序来删除WindowsNTFS卷中的文件和所有相关属性(包括0x30$FILE_NAME、0x80$DATA、0x90$INDEX_ROOT和0xA0$INDEX_ALLOCATION等)。我现在可以找到任何文件的文件记录位置。我会多次覆盖文件记录以防止恢复,然后我放回文件记录的基本信息(即第一个属性“0x10$STANDARD_INFORMATION”的标准属性头)。我用了WriteFile()写入文件记录,返回值表示函数成功。之后,用WinHex打开磁盘查看原始数据,可以看到FileRecordactuallyISmodified。但问题是,我又删除了两三个文件后,
各位程序员大家好。我正在尝试使用WinIoCtl函数转储NTFS分区的USN日志的内容。我的*USN_JOURNAL_DATA*结构告诉我它的最大大小为512MB。我已将其与fsutil对其的评价进行了比较,两者的值(value)相同。现在我必须读取*USN_RECORD*结构中的每个条目。我在一个for循环中执行此操作,该循环从0开始并以4096(簇大小)为增量达到日志的最大大小。我在相同大小的缓冲区中读取每个4096字节,并从中读取所有USN_RECORD结构。一切都很好,文件名正确,时间戳也正确,原因,一切,除了我似乎遗漏了一些最近的记录。我在分区上创建了一个新文件,我在里面写了