c语言注册表REG_MULTI_SZ的取值实例源码,获取注册表信息的方法。c语言指针的应用。
指针的使用也值得学习。
HKEY hKey;
LONG lRes = ERROR_SUCCESS;
LPCTSTR strKey=_T(“SYSTEM\\ControlSet003\\Services\\LanmanServer\\Shares”);
DWORD dwType = REG_MULTI_SZ;
DWORD dwBufSize = 256;
TCHAR *szData = NULL;
TCHAR szValue[MAX_PATH];
DWORD dwValue;
TCHAR *szSubValue = NULL;
if((lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, strKey, 0, KEY_ALL_ACCESS, &hKey))!=ERROR_SUCCESS)
{
return ;
}
for (int nIndex = 0; lRes == ERROR_SUCCESS; nIndex++)
{
memset(szValue,0,sizeof(szValue));
dwValue = MAX_PATH;
if ((lRes = RegEnumValue(hKey, nIndex, szValue, &dwValue, NULL, NULL, NULL, NULL))!=ERROR_SUCCESS)
{
RegCloseKey(hKey);
// SetLastError(lRes);
return ;
}
szData = new TCHAR[dwBufSize];
memset(szData,0,sizeof(TCHAR)*dwBufSize);
if ((lRes = RegQueryValueEx(hKey, szValue, 0, &dwType, (LPBYTE)szData, &dwBufSize))!=ERROR_SUCCESS)
{
RegCloseKey(hKey);
//SetLastError(lRes);
return ;
}
int i= 0;
for ( i=0, szSubValue=szData; szData[0]!=0; i++, szData+=(_tcslen(szData)+1))
{
AfxMessageBox(szData);
}
delete []szSubValue;
}
RegCloseKey(hKey);