Visual Basic for Applications/从 VBA 运行 FCIV 实用程序
外观
Microsoft FCIV 实用程序,即文件校验和完整性验证器,是一个免费的可下载压缩包,允许用户为任何单个文件、平面文件夹或递归地为所有文件和文件夹生成 SHA1 和 MD5 哈希。它可以将其完整的结果包导出到一个指定的 .xml 文件。它还可以针对先前保存的列表进行文件集的验证。它用于命令提示符,但可以使用类似 VBA 的代码中的 Shell 函数或批处理文件运行。有关其使用的更多信息,请参阅:文件校验和完整性验证器实用程序的可用性和描述.
为了完整起见,这里的命令行代码将制作整个 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 中的 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
- 文件校验和完整性验证器 (FCIV) 示例 : 如何从命令行和 VBA 运行 fciv 实用程序的详细示例。还有关于使用命令提示符屏幕的其他说明。
- 文件校验和完整性验证器实用程序的可用性和描述 : Microsoft 关于 fciv 的页面,虽然描述有点简略。
- 在 VBA 中进行文件夹哈希 :另一个配套页面,用于制作递归文件夹哈希列表和日志。使用最新的哈希算法,但仅限于不超过约 200 MB 的文件。