我正在尝试使用 VSS Express Writer 在执行还原点时将我的一个文件夹包含在还原点中。虽然代码似乎运行没有任何错误,但我没有得到预期的结果,当我返回还原点时,该文件夹也没有保留。
为了验证我的代码功能,我可以在 vssadmin list writers 中跟踪我的 writer。
我正在执行以下流程:
- 使用以下代码注册(见下文)。
- 创建系统还原点。
- 删除我的文件夹。
- 重新开始
- 恢复我的系统。
不幸的是,我没有找回我的文件夹..
int main()
{
::CoInitialize(NULL);
createAndRegister();
}
int createAndRegister()
{
CComPtr<IVssExpressWriter> spExpressWriter;
CComPtr<IVssCreateExpressWriterMetadata> spMetadata;
CreateVssExpressWriter(&spExpressWriter);
spExpressWriter->CreateMetadata(EXPRESS_WRITER_SAMPLE_GUID, L"Sample Express Writer", VSS_UT_USERDATA, 1, 0, 0, &spMetadata);
PCWSTR wszComponent = L"myExpressWriter";
spMetadata->SetRestoreMethod(
VSS_RME_RESTORE_AT_REBOOT, ////I've also tried it with different option of this enum
NULL,
NULL,
VSS_WRE_NEVER,
false),
L"SetRestoreMethod failed");
spMetadata->AddComponent(
VSS_CT_FILEGROUP,
NULL,
wszComponent,
wszComponent,
NULL,
0,
false,
false,
false);
spMetadata->AddFilesToFileGroup(
NULL,
wszComponent,
L"c:\\ProgramData\\myFolder",
L"*.*",
true,
NULL,
NULL),
spExpressWriter->Register();
}
procmon 记录是在系统还原点期间设置的,当时没有找到包含 myFolder 路径的事件...是否有可能在向 vsswriter 注册期间而不是在创建还原点期间添加了文件?
也许任何人都可以帮我找到我在这里缺少的东西?
谢谢