winapi - Windows 文件历史记录 API : Adding Include Rule

标签 winapi

我正在构建一个基于 C# 的服务来增强 Windows 文件历史记录。

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

我检查了 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;
};

但是,可以通过桌面设置界面将文件夹/库包含到文件历史记录中。所以我显然错过了一些东西。

最佳答案

The File History protection scope is the set of files that are backed up by the File History feature. It contains inclusion rules and exclusion rules. The default protection scope includes all folders from all user libraries and the Contacts, Desktop, and Favorites folders.

请参阅“IFhConfigMgr::AddRemoveExcludeRule method”。

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

关于winapi - Windows 文件历史记录 API : Adding Include Rule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408331/

相关文章:

c++ - WinApi 消息循环,Postmessage 与 SendMessage 类似

c++ - 如何获得鼠标点击的位置(以 x-y 坐标像素为单位)?

c# - 确定最大化按钮是否可用

c++ - 如何检测属性表中的当前事件页面 (C++/VS)

winapi - 通过单击Ctrl + A选择编辑控件中的所有文本

python - Win32api 没有在 python 中使用 GetCursorPos() 给出正确的坐标

python - teamplayer 和 pyhook 奇怪地相互作用

c++ - 使用不支持超链接的文本编辑器的替代文本将超链接复制到剪贴板

c - 我如何检查 strtol 是否解析了任何内容?

c++ - 我怎样才能像 Microsoft 应用程序一样创建 TreeView