Windows文件历史记录API:添加包含规则

时间:2019-06-01 16:09:05

标签: winapi

我正在构建基于c#的服务来扩展Windows文件历史记录。

Looking through the API我看不到添加“ include”文件夹或库的方法。似乎只有一种添加“排除”文件夹的方法(FYI,包含和排除是指是否备份了特定的文件夹或库)。

我检查了SDK中的fhchg.h头文件,但看不到任何添加在其中定义的文件夹或库的方法:

EXTERN_C const IID IID_IFhConfigMgr;

#if defined(__cplusplus) && !defined(CINTERFACE)

MIDL_INTERFACE("6A5FEA5B-BF8F-4EE5-B8C3-44D8A0D7331C")
IFhConfigMgr : public IUnknown
{
public:
    virtual HRESULT STDMETHODCALLTYPE LoadConfiguration( void) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDefaultConfiguration( 
        /* [in] */ BOOL OverwriteIfExists) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveConfiguration( void) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddRemoveExcludeRule( 
        /* [in] */ BOOL Add,
        /* [in] */ FH_PROTECTED_ITEM_CATEGORY Category,
        /* [in] */ __RPC__in BSTR Item) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIncludeExcludeRules( 
        /* [in] */ BOOL Include,
        /* [in] */ FH_PROTECTED_ITEM_CATEGORY Category,
        /* [out] */ __RPC__deref_out_opt IFhScopeIterator **Iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLocalPolicy( 
        /* [in] */ FH_LOCAL_POLICY_TYPE LocalPolicyType,
        /* [out] */ __RPC__out ULONGLONG *PolicyValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLocalPolicy( 
        /* [in] */ FH_LOCAL_POLICY_TYPE LocalPolicyType,
        /* [in] */ ULONGLONG PolicyValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBackupStatus( 
        /* [out] */ __RPC__out FH_BACKUP_STATUS *BackupStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBackupStatus( 
        /* [in] */ FH_BACKUP_STATUS BackupStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultTarget( 
        /* [out] */ __RPC__deref_out_opt IFhTarget **DefaultTarget) = 0;

    virtual HRESULT STDMETHODCALLTYPE ValidateTarget( 
        /* [in] */ __RPC__in BSTR TargetUrl,
        /* [out] */ __RPC__out PFH_DEVICE_VALIDATION_RESULT ValidationResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProvisionAndSetNewTarget( 
        /* [in] */ __RPC__in BSTR TargetUrl,
        /* [in] */ __RPC__in BSTR TargetName) = 0;

    virtual HRESULT STDMETHODCALLTYPE ChangeDefaultTargetRecommendation( 
        /* [in] */ BOOL Recommend) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryProtectionStatus( 
        /* [out] */ __RPC__out DWORD *ProtectionState,
        /* [out] */ __RPC__deref_out_opt BSTR *ProtectedUntilTime) = 0;

};


#else   /* C style interface */

typedef struct IFhConfigMgrVtbl
{
    BEGIN_INTERFACE

    HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ __RPC__in REFIID riid,
        /* [annotation][iid_is][out] */ 
        _COM_Outptr_  void **ppvObject);

    ULONG ( STDMETHODCALLTYPE *AddRef )( 
        __RPC__in IFhConfigMgr * This);

    ULONG ( STDMETHODCALLTYPE *Release )( 
        __RPC__in IFhConfigMgr * This);

    HRESULT ( STDMETHODCALLTYPE *LoadConfiguration )( 
        __RPC__in IFhConfigMgr * This);

    HRESULT ( STDMETHODCALLTYPE *CreateDefaultConfiguration )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ BOOL OverwriteIfExists);

    HRESULT ( STDMETHODCALLTYPE *SaveConfiguration )( 
        __RPC__in IFhConfigMgr * This);

    HRESULT ( STDMETHODCALLTYPE *AddRemoveExcludeRule )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ BOOL Add,
        /* [in] */ FH_PROTECTED_ITEM_CATEGORY Category,
        /* [in] */ __RPC__in BSTR Item);

    HRESULT ( STDMETHODCALLTYPE *GetIncludeExcludeRules )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ BOOL Include,
        /* [in] */ FH_PROTECTED_ITEM_CATEGORY Category,
        /* [out] */ __RPC__deref_out_opt IFhScopeIterator **Iterator);

    HRESULT ( STDMETHODCALLTYPE *GetLocalPolicy )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ FH_LOCAL_POLICY_TYPE LocalPolicyType,
        /* [out] */ __RPC__out ULONGLONG *PolicyValue);

    HRESULT ( STDMETHODCALLTYPE *SetLocalPolicy )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ FH_LOCAL_POLICY_TYPE LocalPolicyType,
        /* [in] */ ULONGLONG PolicyValue);

    HRESULT ( STDMETHODCALLTYPE *GetBackupStatus )( 
        __RPC__in IFhConfigMgr * This,
        /* [out] */ __RPC__out FH_BACKUP_STATUS *BackupStatus);

    HRESULT ( STDMETHODCALLTYPE *SetBackupStatus )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ FH_BACKUP_STATUS BackupStatus);

    HRESULT ( STDMETHODCALLTYPE *GetDefaultTarget )( 
        __RPC__in IFhConfigMgr * This,
        /* [out] */ __RPC__deref_out_opt IFhTarget **DefaultTarget);

    HRESULT ( STDMETHODCALLTYPE *ValidateTarget )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ __RPC__in BSTR TargetUrl,
        /* [out] */ __RPC__out PFH_DEVICE_VALIDATION_RESULT ValidationResult);

    HRESULT ( STDMETHODCALLTYPE *ProvisionAndSetNewTarget )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ __RPC__in BSTR TargetUrl,
        /* [in] */ __RPC__in BSTR TargetName);

    HRESULT ( STDMETHODCALLTYPE *ChangeDefaultTargetRecommendation )( 
        __RPC__in IFhConfigMgr * This,
        /* [in] */ BOOL Recommend);

    HRESULT ( STDMETHODCALLTYPE *QueryProtectionStatus )( 
        __RPC__in IFhConfigMgr * This,
        /* [out] */ __RPC__out DWORD *ProtectionState,
        /* [out] */ __RPC__deref_out_opt BSTR *ProtectedUntilTime);

    END_INTERFACE
} IFhConfigMgrVtbl;

interface IFhConfigMgr
{
    CONST_VTBL struct IFhConfigMgrVtbl *lpVtbl;
};

还可以通过桌面设置界面将“文件夹/库”包含到“文件历史记录”中。所以我显然缺少了一些东西。

1 个答案:

答案 0 :(得分:1)

  

“文件历史记录”保护范围是备份的文件集   通过文件历史记录功能。它包含包含规则和   排除规则。   默认保护范围包括所有用户的所有文件夹   库以及“联系人”,“桌面”和“收藏夹”文件夹。

请参阅“ IFhConfigMgr::AddRemoveExcludeRule method”。

因此,您不需要添加“包含”文件夹或库,只需在不需要备份文件夹的文件历史记录时添加“排除”即可。