正如标题所示,我需要一种编程方式来确定特定的磁盘驱动器是否要在Windows中进行系统还原。
您可能会在Control Panel/System/System protection
标签中看到此信息。
我正在为Windows开发一个与安全性相关的应用程序,至关重要的是,其内部文件中的某些文件必须严格存在于单个副本中。我想防止Windows意外复制/备份此文件。或者至少是警告用户随之而来的安全风险。
我知道
HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToBackup
,但不能解决问题,因为它仅在还原阶段使用,并且文件内容仍存在于备份存储中。
也有HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore
,但是它不包含有关主题磁盘的信息,至少我看不到。
任何线索都会受到赞赏。
答案 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,并特别注意有关它可能无法按预期工作的情况。