跳转到内容

Visual Basic for Applications/从 VBA 运行 FCIV 实用程序

来自维基教科书,开放的书籍,开放的世界

Microsoft FCIV 实用程序,即文件校验和完整性验证器,是一个免费的可下载压缩包,允许用户为任何单个文件、平面文件夹或递归地为所有文件和文件夹生成 SHA1 和 MD5 哈希。它可以将其完整的结果包导出到一个指定的 .xml 文件。它还可以针对先前保存的列表进行文件集的验证。它用于命令提示符,但可以使用类似 VBA 的代码中的 Shell 函数或批处理文件运行。有关其使用的更多信息,请参阅:文件校验和完整性验证器实用程序的可用性和描述.

制作文件哈希列表

[编辑 | 编辑源代码]

命令行中的 FCIV 哈希运行

[编辑 | 编辑源代码]

为了完整起见,这里的命令行代码将制作整个 Documents 文件夹的 SHA1 哈希的 XML 文件。省略 xml 项和其后的路径将导致屏幕列表。请注意,包含空格的路径需要双引号。

这里假设 fciv 实用程序位于 FCIV 文件夹中。

c:\>FCIV\fciv.exe -r "C:\users\My Folder\Documents" -sha1 -xml "c:\users\My Folder\Documents\myhash.xml"

从 VBA 运行 FCIV 哈希

[编辑 | 编辑源代码]

VBA 中的 Shell 函数没有等待功能,因此Shell 行最好作为最后一行。也就是说,即使Shell 命令仍在处理中,它也会在完成之前将控制权传递给包含它的过程中的下一行;因此,否则过程的结束将中断 Shell 函数,并且该过程很可能失败。在这种情况下,引号也与通常的 VBA 预期略有不同。请注意,所有路径都包含在两组双引号中,并且整个命令行本身随后包含在另一组双引号中。假设fciv.exe已下载并安装如所示,此代码行将用户 Documents 文件夹中每个文件及其所有子文件夹的所有哈希字符串导出到myhash.xml文件。也可以添加一个排除文件路径。

请注意,VBA 的使用有一些限制,虽然可以成功地将输出制作到文件,但验证输出仅限于命令行处理器。有关示例,请参阅页面文件校验和完整性验证器 (FCIV) 示例

Sub FCIV()
   'runs the fciv function from VBA   
Dim Ret
   Ret = Shell("""c:\FCIV\fciv.exe"" -r ""C:\users\My Folder\Documents"" -sha1 -xml ""c:\users\My Folder\Documents\myhash.xml""")
End Sub
[编辑 | 编辑源代码]
华夏公益教科书