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


Автор: alpetyan 8.10.2006, 22:39
Здравствуйте. 
Вопрос такой -- RegQueryValueEx отказывается работать.

Код

#include <windows.h>
//#include <commctrl.h>
#include "dlg.h"
BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
  {
  DialogBox(hInstance,"DlgBox", NULL, DlgProc);
  return 0;
  }

BOOL CALLBACK DlgProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
    HKEY hKey;
    char  StrBuff[1024];
    DWORD SizeStrBuff;
    DWORD RegType;
    switch(Msg)
        {
        case WM_INITDIALOG: 
        return TRUE;

        case WM_COMMAND:
        switch (LOWORD (wParam))
        {                  
        case IDC_FIND  :
               if(ERROR_SUCCESS!=RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\InternetExplorer\\TypedURLs"),0,KEY_ALL_ACCESS|KEY_READ,&hKey))
               { 
        MessageBox(NULL,"CannotRegOpenKeyEx","ERROR",MB_OK);
                   return -1;  
               }
               
               if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"TypedURLs",0,&RegType,(LPBYTE)StrBuff,&SizeStrBuff))
               {
                   MessageBox(NULL,"Cannot RegQueryValueEx","ERROR",MB_OK);
                   return -1;
               }
               RegCloseKey(hKey);
                   
               return 0;
                   
               case IDCANCEL :
               EndDialog (hDlg, 0) ;
               return TRUE;
        }
        break;
        }

return FALSE;
} 


Искал везде(и на форуме),срабатывает сообщение "Cannot RegQueryValueEx".
Что не так? 

Автор: Pulse69 8.10.2006, 22:50
Код

//...
SizeStrBuff = sizeof ( StrBuff );
               if(ERROR_SUCCESS!=RegQueryValueEx(hKey,"TypedURLs",0,&RegType,(LPBYTE)StrBuff,&SizeStrBuff))
               {
                   MessageBox(NULL,"Cannot RegQueryValueEx","ERROR",MB_OK);
                   return -1;
               }

//...


Так работает?

Автор: alpetyan 8.10.2006, 22:57
Pulse69. Отвечаю.
Не а,  да и пробовал по всякому.

Автор: CaptainFlint 8.10.2006, 23:14
alpetyan
Во-первых, такого ключа действительно не существует. "Internet Explorer" с пробелом должен быть указан.
Во-вторых, даже если бы был пробел, ты пытаешься получить несуществующий параметр, а именно - параметр с именем TypedURLs, располагающийся в разделе с тем же именем TypedURLs. Такого в реестре нету, в разделе TypedURLs располагаются ключи с именами urlN, где N - номер.

Автор: alpetyan 8.10.2006, 23:32
 CaptainFlint.

Спасибо.
Только с Internet Explorer я случайно затер на форуме, а с функцией до конца не разобрался. Теперь все работает.
Закрываю тему.



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