我正在构建基于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;
};
还可以通过桌面设置界面将“文件夹/库”包含到“文件历史记录”中。所以我显然缺少了一些东西。
答案 0 :(得分:1)
“文件历史记录”保护范围是备份的文件集 通过文件历史记录功能。它包含包含规则和 排除规则。 默认保护范围包括所有用户的所有文件夹 库以及“联系人”,“桌面”和“收藏夹”文件夹。
请参阅“ IFhConfigMgr::AddRemoveExcludeRule method”。
因此,您不需要添加“包含”文件夹或库,只需在不需要备份文件夹的文件历史记录时添加“排除”即可。