如何以编程方式检查驱动器是否受Windows中的系统还原功能的影响?

时间:2019-01-12 08:56:43

标签: windows system-restore

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

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

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

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

任何线索都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

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


也可以考虑使用FilesNotToSnapshot而不是FilesNotToBackup。它是用于VSS /系统还原的一种。您应该read this document了解它的用法,并使用一个可以排除文件的api,并特别注意有关它可能无法按预期工作的情况。