常用函数 ☆ 打开一个键的函数:RegOpenKeyEx
函数定义:LONG RegOpenKeyEx(HKEY hKey,//已经打开的键的句柄,或者直接是上述几个根键
LPCTSTR lpSubKey,//要打开的子键名字的地址
DWORD ulOptions,//保留值,必须为0
REGSAM samDesired,//打开方式,如读还是写
PHKEY phkResult//返回的打开的子键的句柄
);
☆ 查询某一个键值:RegQueryValueEx
函数定义:LONG RegQueryValueEx(HKEY hKey,//要查询的键的句柄
LPCTSTR lpValueName,//要查询的键值的名称
LPDWORD lpReserved,//保留值
LPDWORD lpType,//要查询的数据的类型
LPBYTE lpData,//要返回的查询的数据
LPDWORD lpcbData//预置的数据的长度
);
☆ 设置一个键值RegSetValueEx
函数定义:LONG RegSetValueEx(HKEY hKey,//要设置的键的句柄
LPCTSTR lpValueName,//要访问的键值的名称
LPDWORD lpReserved,//保留值
DWORD dwType,//要设置的数据的类型
const BYTE *lpData,//要设置的健值
DWORD cbData//数据的长度
);
e.g.1
BOOL IsFlashPlayerExist()
{
HKEY hResult;
CString m_strkey1=_T("SOFTWARE//Macromedia//FlashPlayerActiveX");
CString m_strkey2=_T("SOFTWARE//Macromedia//FlashPlayerPlugin");
if(ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_strkey2,0,KEY_QUERY_VALUE,&hResult)&&
ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_strkey1,0,KEY_QUERY_VALUE,&hResult))
return FALSE;
char cRegData[256];
DWORD dwCount=256;
if(ERROR_SUCCESS!=RegQueryValueEx(hResult,_T("Path"),0,0,(LPBYTE)cRegData,&dwCount))
{
RegCloseKey(hResult);
return FALSE;
}
RegCloseKey(hResult);
CString cRes ;
cRes.Format(_T("%s"),cRegData);
if(cRes!=_T(""))
return TRUE;
return FALSE;
}
e.g.2
void SetAutoRun(bool IsAutoRun)
{
CString strPath = GetCurrentPath() + NAME_INSTANCE + L".exe";
int nLength = strPath.GetLength() * 2 + 2;
CString str;
HKEY hRegKey;
str=_T("Software//Microsoft//Windows//CurrentVersion//Run");
if(RegOpenKey(HKEY_LOCAL_MACHINE,str,&hRegKey) != ERROR_SUCCESS)
{
::AfxMessageBox(_T("Open Run Fail"));
return;
}
if (IsAutoRun)
{
if(::RegSetValueEx(hRegKey,NAME_INSTANCE,0,REG_SZ,(CONST BYTE*)strPath.GetBuffer(0),nLength) != ERROR_SUCCESS)
{
::AfxMessageBox(_T("Write run fail"));
strPath.ReleaseBuffer();
::RegCloseKey(hRegKey);
return;
}
}
else {
if(::RegSetValueEx(hRegKey,NAME_INSTANCE,0,REG_SZ,(CONST BYTE*)L"",0) != ERROR_SUCCESS)
{
::AfxMessageBox(_T("Write run fail"));
strPath.ReleaseBuffer();
::RegCloseKey(hRegKey);
return;
}
}
::RegCloseKey(hRegKey);
}