常用函數 ☆ 打開一個鍵的函數: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);
}