Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Первый параметр реестра


Автор: alpetyan 15.11.2006, 23:26
Сограждане и иностранцы.
Помогите чайнику.
Нужно получать и изменять, первый из трех параметров реестра.
Не могу найти нужные функции. (если можно синтаксис)

Автор: dumb 16.11.2006, 04:01
что есть "параметр реестра"?

Автор: alpetyan 16.11.2006, 12:39
Пример.

Код

if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"url1",0,&RegType,(LPBYTE)&StrBuff[0],&SizeStrBuff))


url1 который.

Вторые два тип данных и сами данные. (я хотел сказать)
Как работать с первым не понимаю.

Автор: SergeCpp 16.11.2006, 12:51
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/regqueryvalueex.asp

lpValueName 
[in] The name of the registry value. 
If lpValueName is NULL or an empty string, "", the function retrieves the type and data for the key's unnamed or default value, if any.

For more information, see Registry Element Size Limits.

Keys do not automatically have an unnamed or default value. Unnamed values can be of any type.

Windows Me/98/95:  Every key has a default value that initially does not contain data. On Windows 95, the default value type is always REG_SZ. On Windows 98 and Windows Me, the type of a key's default value is initially REG_SZ, but RegSetValueEx can specify a default value with a different type.

Автор: alpetyan 16.11.2006, 21:39
RegQueryValueEx

Я пишу уже предопределенный параметр для получения данных.

Разве есть модификация для получения параметра?

Автор: Aleksandor 16.11.2006, 22:51
Я так понял что надо прочитать параметр и записать? Тогда примерно так-


Код

char szDir[MAX_PATH];
DWORD dwLength=MAX_PATH+1;
if (ERROR_SUCCESS==(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE\\Your Company\\Your Product\\Params"),0,KEY_QUERY_VALUE,&hKey))) {
    RegQueryValueEx(hKey,"param1",0,0,(const BYTE*)szDir,&dwLength); 
    RegCloseKey(hKey); } 




Код

if (ERROR_SUCCESS==(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE\\Your Company\\Your Product\\Params"),0,KEY_SET_VALUE,&hKey))) {
    RegSetValueEx(hKey,"param1",0,REG_SZ,(const BYTE*)szDir,lstrlen(szDir)+1); 
    RegCloseKey(hKey); } 

Автор: alpetyan 17.11.2006, 00:21
Вот я болван: объяснить не умею.

С данными в реестре я работать умею.
Вопрос именно о параметре данных.

RegQueryValueEx cчитывает данные и тип данных а не
саму надпись: url1 или param1. 
Нужно считать именно надпись перед типом данных и данными.

Как получить и  этот параметр:

думаю:

RegEnumValue

RegQueryInfoKey


Автор: Aleksandor 17.11.2006, 07:13
А ну тогда конечно RegEnumValue

Код

DWORD nmSize=256, vlSize=2048, i=0; 
HKEY hKey;
char szValueName[255];
BYTE cbResult[2048];

if (ERROR_SUCCESS!=(RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("SOFTWARE..."),0,KEY_QUERY_VALUE,&hKey))) { 
while (ERROR_SUCCESS==(RegEnumValue(hKey,i,szValueName,&nmSize,0,NULL,(LPBYTE) cbResult, &vlSize))) {
    // do something with szValueName
    i++; nmSize=256; szValueName[0]='\0'; vlSize=2048;
        }
RegCloseKey(hKey);
}

Автор: alpetyan 17.11.2006, 08:58
Aleksandor, SergeCpp.

Спасибо.

Закрываю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)