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


Автор: Mark4545 29.7.2007, 16:56
Код

if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\MediaPlayer\\",0,KEY_READ,&key)==ERROR_SUCCESS)
  {
      MessageBox(0,"ok","1",0);
      if(RegQueryValue(key,"Installation Directory",PlayerPath,&buffsize)==ERROR_SUCCESS)
      {
          MessageBox(0,"Ok","2",0);
      }
      else
      {
          sprintf(debug,"%d",GetLastError());
          MessageBox(0,debug,"error",0);
      }
  }

При вынолнении этого кода  2 ой месседж бокс выскакивает с кодом GetLastError ==0
в мсдн написано 0=ERROR_SUCCESS так почему же так. А не выскакивает меесадж бокс 
MessageBox(0,"Ok","2",0); никак не могу понять. Заранее спс.

Автор: 586 29.7.2007, 17:05
Код ошибки возвращает функция RegQueryValue, GetLastError не нужно использовать.

Автор: Mark4545 29.7.2007, 17:11
ок ща посмотрим.

Добавлено через 9 минут и 21 секунду
еррор код 2(ERROR_FILE_NOT_FOUND)
Почему никак не могу разобрать.

Автор: 586 29.7.2007, 17:24
не найден ключ значение (Value)

Автор: Mark4545 29.7.2007, 17:26
так он существует)

Добавлено через 26 секунд
я же не от балды его взял) смотрел через регедит есть.

Автор: 586 29.7.2007, 17:42
и в правду не найден

Цитата
The RegQueryValue function retrieves the data associated with the default or unnamed value of a specified registry key. The data must be a null-terminated string.
...
lpSubKey 
[in] Pointer to a null-terminated string containing the name of the subkey of the hKey parameter for which the default value is retrieved. 
Key names are not case sensitive.

рабочий код:
Код
#include <windows.h>
#include <stdio.h>

int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, INT)
{
    char debug[50];
    char PlayerPath[260]={0};
    DWORD buffsize=sizeof(PlayerPath);
    DWORD dwErr;
    DWORD type=REG_SZ;
    HKEY key;

    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\MediaPlayer\\",0,KEY_READ,&key)==ERROR_SUCCESS)
    {
      MessageBox(0,"ok","1",0);
      dwErr=RegQueryValueExA(key,"Installation Directory", 0, &type, (LPBYTE)PlayerPath, &buffsize);
      if(dwErr==ERROR_SUCCESS)
      {
          MessageBoxA(0,PlayerPath,"2",0);
      }
      else
      {
          sprintf(debug,"%d", dwErr);
          MessageBox(0,debug,"error",0);
      }
      RegCloseKey(key);
    }
    return 0;
}

Автор: Mark4545 29.7.2007, 17:54
сенкс 2 586. Пошел разбирать код

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