c语言注册表REG_MULTI_SZ的取值实例源码



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);