0

我正在尝试使用 VSS Express Writer 在执行还原点时将我的一个文件夹包含在还原点中。虽然代码似乎运行没有任何错误,但我没有得到预期的结果,当我返回还原点时,该文件夹也没有保留。

为了验证我的代码功能,我可以在 vssadmin list writers 中跟踪我的 writer。

我正在执行以下流程:

  1. 使用以下代码注册(见下文)。
  2. 创建系统还原点。
  3. 删除我的文件夹。
  4. 重新开始
  5. 恢复我的系统。

不幸的是,我没有找回我的文件夹..

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 注册期间而不是在创建还原点期间添加了文件?

也许任何人都可以帮我找到我在这里缺少的东西?

谢谢

4

0 回答 0