系统极客一直在努力
专注操作系统及软件使用技能

SysInternals系列:分析管理文件、文件夹和驱动器

Windows 10

一如往常,在本次的 SysInternals 系列文章中,我们将向大家介绍如何使用 SysInternals 工具来分析与管理 Windows 操作系统中的文件、文件夹和驱动器,如:查看隐藏数据或安全地删除文件等等。

Streams:查看和显示隐藏的NTFS流

大多数用户都不了解,Windows 其实会隐藏部分存储在文件系统中的数据,被称为「备用数据流」,只有在文件名末尾追加冒号和独特的密钥才能与之进行交互。


例如你想隐藏文件中的某些数据,可以使用类似 echo Secret > filename.txt:hiddenstuff 这样的命令,当你用 Notepad 打开 filename.txt 文件时,不会看到写入的「Secret」字符。这只是便于大家对 NTFS「备用数据流」便于理解的一个示例,其实还可以使用该技术来做很多事情。

对 NTFS「备用数据流」技术使用最多的应该是杀毒软件了,很多杀软件会对扫描过的文件打上标记,下次再扫描时发现该文件已有标记则视为「安全」以实现快速扫描。

Streams 命令行工具的用法非常简单:

streams <文件名>

Streams

以上命令可以帮助大家查看指定文件已有的全部「备用数据流」,也可以使用 -d 参数进行清除。

SigCheck:分析未经数字签名的文件(如恶意软件)

前面我们曾介绍过 procexp 可以查看进程文件是否拥有数字签名,SigCheck 也是可以帮助我们分析文件是否拥有数字签名的一个命令行工具。它还可以从 VirusTotal 进行检查,以方便我们找出恶意软件。

SigCheck 命令行工具最常用的是 -u 参数,它只报告有问题的文件;-e 参数表示只对可执行文件进行检查。所以,我们可以使用如下命令对 C:\Windows\System32 (或某个其它)文件夹进行快速检查:

sigcheck -e -u C:\Windows\System32

在发现异常文件时,可以使用 -v 参数开启 VirusTotal 校验。

sigcheck -v -vt <文件名>

SigCheck

SDelete:安全删除文件

大家都知道,在 Windows 中删除文件都不是直接清除,而是在硬盘中标记为已删除,SDelete 命令行工具可以帮助我们将硬盘中已经删除文件部分填充无意义数据以达到抹除的目的。当然 SDelete 也可以直接跟上文件路径以实现删除:

sdelete <文件名>

对我个人来说,SDelete 命令行工具最常用于制作虚拟机母板时使用。其中的 -z 参数可以将磁盘中已删除文件部分全部清零,非常有利于压缩虚拟机母板大小。

sdelete -c –z

SDelete

Contig:整理一个或多个文件

如果你想只对 Windows 中的一个或几个文件进行磁盘碎片整理,可以使用 Contig 命令行工具,其语法非常简单:

contig <文件名> 

如果你要分析一个文件的碎片而不实际整理,可以使用 -a 参数。

Contig

du:查看磁盘用量

相信大家最常用 Windows 资源管理器来查看磁盘空间和文件夹大小,而 du 是 Sysinternals 套件中的命令行磁盘和文件夹大小查看工具。du 命令行工具的存在主要是因为其显示更为准确,而且在计算空间时不会计数符号链接文件。

du

其中 -n 参数在统计大小时不递归在子文件夹,-v 参数将详细列表显示子文件夹大小(KB),-l 参数可以单独控制子文件夹递归层级(默认为 1)。

Junction:创建符号链接

Windows 与 Linux 一样支持文件和文件夹的符号链接,在 Windows 中大家通常都使用快捷方式来指向同一文件或文件夹,但符号链接是 NTFS 文件系统级别的,工作得比较底层,有研究的朋友都知道 mklink 命令可以在 Windows 中创建符号链接。

Sysinternals 工具包中的 Junction 命令也可用于创建和删除符号链接:

junction <快捷名称> <目标>

Junction

如果要删除,只需使用 -d 参数即可。

DiskView:显示磁盘结构

DiskView 小工具可以让你以图形界面的方式查看详细的磁盘驱动器结构并可以放大和缩小显示区块,甚至可以选择某个文件之后查看其在磁盘中存储的位置。

DiskView

MoveFiles:重启时移动系统文件

大家有没想过为什么在 Windows Update 之后或安装某些应用程序之后会要求重启系统?因为在 Windows 运行时,有些文件(特别是系统文件)是不能随便被移来移去功随意替换掉的。movefile 命令行小工具可以调用 Windows 自身的功能帮助我们在 Windows 下次重启时移动、删除或重命名文件或目录,其语法非常简单:

movefile <源> <目的>

例如我们要将 D:\Tools\Autoruns.exe 在下次重启时移到 C 盘,可以这么写:

movefile D:\Autoruns.exe C:\

MoveFiles

与 movefile 命令功能类似的还有一个 pendmoves 兄弟命令,用法都差不多,这里就不介绍了,大家可自行研究。

FindLinks:查找硬链接文件

前面既然提到了 Junction 创建符号链接,就不得不提一个 findlinks 这个 Sysinternals 是用于查看文件硬链接的命令行工具。如果有多个硬链接指向同一文件,在删除最后一个硬链接时就会将文件直接删除,因此大家可用 findlinks 工具进行查看和关注。

findlinks <文件名>

FindLinks

Disk2vhd:物理磁盘转换VHD虚拟磁盘

Disk2vhd 小工具可将正在运行计算机的磁盘克隆成 VHD 虚拟磁盘文件,因此它也成为不少虚拟化项目中的 P2V 转换工具。

Disk2vhd

在使用时大家可以选择性勾选创建 .vhdx 虚拟磁盘文件格式,建议大家勾选「Use Volume Shadow Copy」使用 VSS 服务复制文件。

赞(0) 赞赏

评论 6

  1. #3

    看到这工具我觉的蛮有意思的,于是玩乎。
    可是试了几回、即便是在普通目录之间、而且在输出的显示中也均有成功计划提示了,但是实体机重启后无果。

    Ase4周前 (10-24)回复
    • 要这样写movefile D:\Autoruns.exe D:\tools\Autoruns.exe,不能跨分区,还需要以管理员权限执行

      海猴子4周前 (10-26)回复
      • 好的。

        Ase4周前 (10-26)
  2. #2

    博主呀,movefile 的示例,阐述的诉求与命令不符合吧?

    Ase4周前 (10-22)回复
    • MoveFile 确实用于在下次重启时安排文件移动、重命名或删除操作,这点没问题。但移动操作只能在单个卷上执行(不能跨卷,我刚在虚拟机上测试过了),并且要求目标目录已经存在。由于我平常基本用不到这个工具,文章中的示例错误了,这个我会抽时间更正。

      海猴子4周前 (10-23)回复
  3. #1

    没事就来看这个系列的文章,越来越依赖了

    絮沫纷飞8年前 (2017-06-05)回复

微信赞赏