您的位置:首页 > 其它

注册表 读写 操作 我自己编写的类

2011-08-09 14:28 369 查看
xxx.h头文件

#pragma once

#include <winreg.h>

class CRegedit

{

public:

LONG Read(LPCTSTR pszKey , BYTE *pData , DWORD & dwLength);

LONG Read(LPCTSTR pszKey, CString sVal);

LONG Read(LPCTSTR pszKey , DWORD & dwVal);

LONG Write(LPCTSTR pszKey , const BYTE *pData , DWORD dwLength);

LONG Write(LPCTSTR pszKey , LPCTSTR pszVal);

LONG Write(LPCTSTR pszKey , DWORD dwVal);

void Close();

LONG Open(HKEY hKeyRoot , LPCTSTR pszPath , REGSAM dwAccess = KEY_ALL_ACCESS);

CRegedit(void);

~CRegedit(void);

protected:

CString m_sPath;

HKEY m_hKey;

};

//源文件

#include "StdAfx.h"

#include "Regedit.h"

CRegedit::CRegedit(void)

{

m_hKey = NULL;

}

CRegedit::~CRegedit(void)

{

Close();

}

LONG CRegedit::Open(HKEY hKeyRoot,LPCTSTR pszPath,REGSAM dwAccess)

{

DWORD dw;

m_sPath = pszPath;

return RegCreateKeyEx(hKeyRoot,pszPath,0L,NULL,REG_OPTION_NON_VOLATILE,dwAccess,NULL,&m_hKey,&dw);

}

void CRegedit::Close()

{

if(m_hKey)

{

RegCloseKey(m_hKey);

m_hKey = NULL;

}

}

LONG CRegedit::Write(LPCTSTR pszKey, DWORD dwVal)

{

ASSERT(m_hKey);

ASSERT(pszKey);

return RegSetValueEx(m_hKey,pszKey,0L,REG_DWORD,(CONST BYTE *)&dwVal,sizeof(DWORD));

}

LONG CRegedit::Write(LPCTSTR pszKey, LPCTSTR pszVal)

{

ASSERT(m_hKey);

ASSERT(pszKey);

ASSERT(pszVal);

ASSERT(AfxIsValidAddress(pszVal,strlen(pszVal),FALSE));

return RegSetValueEx(m_hKey,pszKey,0L,REG_SZ,(CONST BYTE*)pszVal,CString(pszVal).GetLength()+1);

}

LONG CRegedit::Write(LPCTSTR pszKey, const BYTE *pData, DWORD dwLength)

{

ASSERT(m_hKey);

ASSERT(pszKey);

ASSERT(pData && dwLength> 0);

ASSERT(AfxIsValidAddress(pData , dwLength , FALSE));

return RegSetValueEx(m_hKey , pszKey , 0L , REG_BINARY , pData , dwLength);

}

LONG CRegedit::Read(LPCTSTR pszKey, DWORD &dwVal)

{

ASSERT(m_hKey);

ASSERT(pszKey);

DWORD dwType;

DWORD dwSize = sizeof(DWORD);

DWORD dwDest;

LONG lRet = RegQueryValueEx(m_hKey , pszKey , NULL , &dwType , (LPBYTE) &dwDest , &dwSize);

if(lRet == ERROR_SUCCESS)

dwVal = dwDest;

return lRet;

}

LONG CRegedit::Read(LPCTSTR pszKey,CString sVal)

{

ASSERT(m_hKey);

ASSERT(pszKey);

DWORD dwType;

DWORD dwSize = 512;

// char string[512] ;

LPBYTE string;

LONG lRet = RegQueryValueEx(m_hKey,pszKey,NULL,&dwType,string, &dwSize);

if(lRet == ERROR_SUCCESS)

{

sVal = string;

}

return lRet;

}

LONG CRegedit::Read(LPCTSTR pszKey, BYTE *pData, DWORD &dwLength)

{

ASSERT(m_hKey);

ASSERT(pszKey);

DWORD dwType;

return RegQueryValueEx(m_hKey,pszKey,NULL,&dwType,pData,&dwLength);

}

//======================================

//使用举例:

void Cdemo_print_win32_cDlg::OnBnClickedButton5()

{

// TODO: Add your control notification handler code here

CRegedit reg;

CString str = NULL;

// HKEY hkey;

//RegCreateKeyEx(L"HKEY_LOCAL_MACHINE",L"HARDWARE\\DEVICEMAP\\SERIALCOMM",0L,NULL,REG_OPTION_NON_VOLATILE,KEY_READ| KEY_WRITE,)

LPBYTE aaa = (LPBYTE)"sdfasdfsdf";

reg.Open(HKEY_LOCAL_MACHINE,L"HARDWARE\\DEVICEMAP\\SERIALCOMM",KEY_READ|KEY_WRITE);

if(reg.Read(_T("\\Device\\VCom15"),str)!=ERROR_SUCCESS)

MessageBox(L"READ failed");

else

MessageBox(str,0,0);

// if(reg.Write(L"NewItem1",L"B")!=ERROR_SUCCESS)

// MessageBox(L"Write failed");

reg.Close();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: