secure.h
来自「采用c++实现的文件加密程序」· C头文件 代码 · 共 72 行
H
72 行
// Secure.h : Declaration of the CSecure
#ifndef __SECURE_H_
#define __SECURE_H_
#include "resource.h" // main symbols
#include "rc4.h"
/////////////////////////////////////////////////////////////////////////////
// CSecure
class ATL_NO_VTABLE CSecure :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CSecure, &CLSID_Secure>,
public ISupportErrorInfo,
public IDispatchImpl<ISecure, &IID_ISecure, &LIBID_SECURESTORAGELib>
{
public:
CSecure()
{
m_pUnkMarshaler = NULL;
m_Registry.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\SecureStorage");
}
virtual ~CSecure()
{
m_Registry.Close();
}
DECLARE_REGISTRY_RESOURCEID(IDR_SECURE)
DECLARE_NOT_AGGREGATABLE(CSecure)
DECLARE_GET_CONTROLLING_UNKNOWN()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CSecure)
COM_INTERFACE_ENTRY(ISecure)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
END_COM_MAP()
HRESULT FinalConstruct()
{
return CoCreateFreeThreadedMarshaler(
GetControllingUnknown(), &m_pUnkMarshaler.p);
}
void FinalRelease()
{
m_pUnkMarshaler.Release();
}
CComPtr<IUnknown> m_pUnkMarshaler;
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// ISecure
public:
STDMETHOD(DecryptFromRegistry)(/*[in]*/ BSTR key, /*[in]*/ BSTR name, /*[out, retval]*/ BSTR * value);
STDMETHOD(EncryptToRegistry)(/*[in]*/ BSTR key, /*[in]*/ BSTR name, /*[in]*/ BSTR value);
STDMETHOD(get_RegistryKey)(/*[out, retval]*/ BSTR *pVal);
STDMETHOD(put_RegistryKey)(/*[in]*/ BSTR newVal);
STDMETHOD(Decrypt)(/*[in]*/ BSTR key, /*[in]*/ BSTR cipher, /*[out,retval]*/ BSTR * clearText);
STDMETHOD(Encrypt)(/*[in]*/ BSTR key, /*[in]*/ BSTR value, /*[out,retval]*/ BSTR * cipher);
private:
bstr_t m_registryPath;
CRegKey m_Registry;
};
#endif //__SECURE_H_
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?