Как считать значение из реестра, в MS VC++ 6?
От: Derzky  
Дата: 05.08.01 13:29
Оценка:
Как считать значение из реестра, в MS VC++ 6?
На примере — HKEY_LOCAL_MACHINE\Software\My Company строковой параметр User,
как считать его значение в переменную типа CString?
Re: Как считать значение из реестра, в MS VC++ 6?
От: asv  
Дата: 06.08.01 04:46
Оценка:
Здравствуйте Derzky, вы писали:

D>Как считать значение из реестра, в MS VC++ 6?

D>На примере — HKEY_LOCAL_MACHINE\Software\My Company строковой параметр User,
D>как считать его значение в переменную типа CString?

char buff[256]; // в Win95/98 строка в реестре не может быть больше 255 символов
memset(buff, 0, 256);

HKEY hKey = NULL;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, KEY_ALL_ACCESS, &hKey);
RegOpenKeyEx(hKey, "My Company", 0, KEY_ALL_ACCESS, &hKey);
RegQueryValueEx(hKey, "User", 0, REG_SZ, buff, 255);
RegCloseKey(hKey);

все ф-ции работы с реестром описаны в
MSDN\Platform SDK\Registry\Registry Reference\Registry Functions
--
asv
Re[2]: Как считать значение из реестра, в MS VC++ 6?
От: Alex Fedotov США  
Дата: 06.08.01 05:24
Оценка:
Здравствуйте asv, вы писали:

asv>char buff[256]; // в Win95/98 строка в реестре не может быть больше 255 символов

asv>memset(buff, 0, 256);

asv>HKEY hKey = NULL;

asv>RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE", 0, KEY_ALL_ACCESS, &hKey);
asv>RegOpenKeyEx(hKey, "My Company", 0, KEY_ALL_ACCESS, &hKey);
asv>RegQueryValueEx(hKey, "User", 0, REG_SZ, buff, 255);
^^^
Гкхм, это не будет не только работать, но и компилироваться.

asv>RegCloseKey(hKey);
-- Alex Fedotov
Re: Как считать значение из реестра, в MS VC++ 6?
От: Alex Fedotov США  
Дата: 06.08.01 05:28
Оценка:
Здравствуйте Derzky, вы писали:

D>Как считать значение из реестра, в MS VC++ 6?

D>На примере — HKEY_LOCAL_MACHINE\Software\My Company строковой параметр User,
D>как считать его значение в переменную типа CString?

CString str;

LONG lRes;
HKEY hKey;
DWORD cbStr = 256 * sizeof(TCHAR);

lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\My Company"), 0, KEY_READ, &hKey);
if (lRes == ERROR_SUCCESS)
{
lRes = RegQueryValueEx(hKey, _T("User"), NULL, NULL, (LPBYTE)str.GetBuffer(256), &cbStr);
str.ReleaseBuffer();

RegCloseKey(hKey);
}

if (lRes != ERROR_SUCCESS)
// error handling here
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.