首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows文件历史API:添加包含规则

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

Stack Overflow用户
提问于 2019-06-02 00:09:05
回答 2查看 100关注 0票数 1

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

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

我检查了SDK中的fhchg.h头文件,也没有看到任何用于添加其中定义的文件夹或库的方法:

代码语言:javascript
复制
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;
};

但是,文件夹/库可以通过桌面设置界面包含到文件历史记录中。所以很明显我漏掉了什么。

EN

回答 2

Stack Overflow用户

发布于 2019-06-03 17:23:33

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

请参阅"IFhConfigMgr::AddRemoveExcludeRule method“。

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

票数 1
EN

Stack Overflow用户

发布于 2022-01-06 22:46:26

AFAICT,没有这样的API。作为一种非常老套且不推荐的解决方法,我的脚本直接在%LOCALAPPDATA%/Microsoft/Windows/FileHistory/Configuration中编辑Config1.xmlConfig2.xml文件。我不确定是否有必要这样做,但在进行编辑之前,我也会停止并禁用File History服务。

(不,我不知道为什么会有两个相同的配置文件)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56408331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档