分享
 
 
 

关于注册表的源程序

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

// Registry.cpp

#include "stdafx.h"

#include "Registry.h"

CRegistry::CRegistry()

{

m_hKey = NULL;

Open( _hKey, m_strUseKey );

}

CRegistry::CRegistry( HKEY hKey, const char *lpszSubKey )

{

m_hKey = NULL;

Open( hKey, lpszSubKey );

}

CRegistry::~CRegistry()

{

Close();

}

BOOL CRegistry::Open( HKEY hKey, const char *lpszSubKey )

{

Close();

if( ::RegOpenKeyEx( hKey, lpszSubKey, 0, KEY_ALL_ACCESS, &m_hKey ) != ERROR_SUCCESS ){

m_hKey = NULL;

m_dwLastError = GetLastError();

return( FALSE );

}

return( TRUE );

}

BOOL CRegistry::Close( void )

{

BOOL bRet = TRUE;

if( m_hKey == NULL )

return( FALSE );

bRet = ( ::RegCloseKey( m_hKey ) == ERROR_SUCCESS );

m_hKey = NULL;

return( bRet );

}

BOOL CRegistry::IsOpen( void )

{

return( m_hKey != NULL );

}

BOOL CRegistry::Read( const char *lpszValueName, LPVOID lpReturnBuffer, int nSize )

{

if( m_hKey == NULL )

return( FALSE );

DWORD dwSize = (DWORD) nSize;

BOOL bRet = ( ::RegQueryValueEx( m_hKey, lpszValueName, NULL, NULL, (unsigned char *) lpReturnBuffer, &dwSize ) == ERROR_SUCCESS );

m_dwLastError = GetLastError();

return( bRet );

}

BOOL CRegistry::ReadDWORD( const char *lpszValueName, DWORD *pdwData, DWORD *pdwLastError )

{

if( m_hKey == NULL )

return( FALSE );

BOOL bRet = Read( lpszValueName, pdwData, sizeof( DWORD ) );

if( pdwLastError != NULL )

*pdwLastError = m_dwLastError;

return( bRet );

}

BOOL CRegistry::ReadString( const char *lpszValueName, LPVOID lpReturnBuffer, int nSize, DWORD *pdwLastError )

{

if( m_hKey == NULL )

return( FALSE );

char *lpWork = (char *) lpReturnBuffer;

lpWork[0] = 0;

BOOL bRet = Read( lpszValueName, lpReturnBuffer, nSize );

if( pdwLastError != NULL )

*pdwLastError = m_dwLastError;

return( bRet );

}

char **CRegistry::ReadMultipleStrings( const char *lpszValueName, DWORD *pdwLastError )

{

char szEntireString[2500];

if( !ReadString( lpszValueName, szEntireString, 2500, pdwLastError ) )

return( NULL );

if( szEntireString[0] == 0 )

return( NULL );

int nCount = 0;

if( szEntireString[strlen(szEntireString)-1] != ’;’ )

nCount = 1;

char *pPointer = szEntireString;

do{

pPointer = strstr( pPointer, ";" );

if( pPointer != NULL ){

nCount++;

pPointer++;

}

} while( pPointer != NULL );

int i = 0;

char *pEnd;

char **pList = (char **) new char [(nCount+3)*sizeof(char *)];

if( pList == NULL )

return( NULL );

memset( pList, 0, ( nCount + 3 ) * sizeof(char *) );

pPointer = szEntireString;

do{

pEnd = strstr( pPointer, ";" );

int nSize = strlen( pPointer );

if( pEnd != NULL )

nSize = pEnd - pPointer;

pList[i] = new char [nSize+3];

if( pList[i] != NULL ){

memset( pList[i], 0, nSize + 3 );

memcpy( pList[i], pPointer, nSize );

}

else pEnd = NULL;

pPointer = pEnd;

if( pPointer != NULL )

pPointer++;

i++;

} while( pPointer != NULL && pPointer[0] != 0 );

return( pList );

}

void CRegistry::DeleteList( char **pList )

{

if( pList == NULL )

return;

int i = 0;

while( pList[i] != NULL ){

delete [] pList[i];

i++;

}

delete pList;

}

BOOL CRegistry::WriteDWORD( const char *lpszValueName, DWORD dwData, DWORD *pdwLastError )

{

if( m_hKey == NULL )

return( FALSE );

m_nSize = sizeof( DWORD );

BOOL bRet = Write( lpszValueName, &dwData, REG_DWORD, sizeof( DWORD ) );

if( pdwLastError != NULL )

*pdwLastError = m_dwLastError;

return( bRet );

}

BOOL CRegistry::WriteString( const char *lpszValueName, LPVOID lpData, DWORD *pdwLastError )

{

if( m_hKey == NULL )

return( FALSE );

m_nSize = 2000;

BOOL bRet = Write( lpszValueName, lpData, REG_SZ, (DWORD) strlen( (const char *) lpData ) + 1 );

if( pdwLastError != NULL )

*pdwLastError = m_dwLastError;

return( bRet );

}

BOOL CRegistry::Write( const char *lpszValueName, LPVOID lpData, DWORD dwType, int nSize )

{

if( m_hKey == NULL )

return( FALSE );

DWORD dwSize = (DWORD) m_nSize;

BOOL bRet = ( ::RegSetValueEx( m_hKey, lpszValueName, 0, dwType, (unsigned char *) lpData, nSize ) == ERROR_SUCCESS );

m_dwLastError = GetLastError();

return( bRet );

}

BOOL CRegistry::CreateKey( HKEY hKey, const char *lpszSubKey, const char *lpszClass )

{

HKEY hOpenedKey;

DWORD dwDisposition;

DWORD dwLastError;

BOOL bRet = ( ::RegCreateKeyEx( hKey, lpszSubKey, 0, (char *) lpszClass, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hOpenedKey, &dwDisposition ) == ERROR_SUCCESS );

if( bRet ) ::RegCloseKey( hOpenedKey );

dwLastError = GetLastError();

return( bRet );

}

BOOL CRegistry::DeleteKey( HKEY hKey, const char *lpszSubKey )

{

BOOL bRet;

DWORD dwLastError;

bRet = ( ::RegDeleteKey( hKey, lpszSubKey ) == ERROR_SUCCESS );

dwLastError = GetLastError();

return( bRet );

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有