2

正如标题所示,我需要一种编程方式来确定特定磁盘驱动器是否需要在 Windows 中进行系统还原。您可能会在Control Panel/System/System protection选项卡中看到此信息。

我正在为 Windows 开发一个与安全相关的应用程序,它的一些内部文件必须严格存在于一个副本中,这一点至关重要。我想防止这些文件被 Windows 无意中复制/备份。或者至少警告用户随之而来的安全风险。

我知道 HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToBackup但它并不能解决问题,因为它仅在恢复阶段使用,并且文件内容仍然存在于备份存储中。

还有HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore,但它不包含有关主题磁盘的信息,至少我没有看到它。

非常感谢任何线索。

4

1 回答 1

1

系统还原由Volume Shadow Copy api管理。

您需要调用QueryVolumesSupportedForDiffAreas 方法,返回的 IVssEnumMgmtObject 内部将是一个VSS_DIFF_VOLUME_PROP结构,它将告诉您是否在 m_llVolumeTotalSpace 参数中保留了任何存储区域。

或者,您可以通过探索命令来解析vssadmin list shadowstorage命令的输出,或者它在 Powershell/WMI 中的等价物Get-CimClass -ClassName *shadow。这些命令对应于 wmiobjects 和 wmi api,它们可能更易于使用且更易于访问,具体取决于您的背景和编程环境。


还可以考虑使用FilesNotToSnapshot代替FilesNotToBackup。它是用于 VSS/系统还原的一种。您应该阅读本文档以了解其用法以及一个允许您排除文件的 api,并特别注意它可能无法按您预期工作的情况。

于 2019-01-12T10:19:56.323 回答