HKEY key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_QUERY_VALUE,&hKey );
как работает ф-ция реестра RegGetValue ?
мне нужно прочесть из реестра несколько параметров
нашел функцию RegGetValue(...).
в msdn-е нет примера на нее ...
только объявление.
у меня в студии происходит "вылет" из за неё((
есть у кого какой пример ?
Код:
у меня все равно вылетает прога(
давай сюда код
Код:
#define reg_run "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
#define reg_parm "Software\\Microsoft\\Windows\\CurrentVersion"
......
//----------------устанавливаю парам в реестре
void SetupParm(char *InfoDay, char *Th, char *Tm){
HKEY runPar = NULL;
RegOpenKeyEx(HKEY_CURRENT_USER, reg_parm, 0, KEY_WRITE, &runPar);
RegSetValueEx(runPar,"TDay" ,0, REG_SZ, (PBYTE)InfoDay,10);
RegSetValueEx(runPar,"Th" ,0, REG_SZ, (PBYTE)Th,3);
RegSetValueEx(runPar,"Tm" ,0, REG_SZ, (PBYTE)Tm,3);
RegCloseKey(runPar);
}
//--------------читаю из реестра
void ReadParm(char *InfoDay, char *Th, char *Tm){
HKEY rParm;
LPDWORD pdwType;
PVOID pvData;
LPDWORD pcbData;
RegOpenKeyEx(HKEY_CURRENT_USER,reg_parm,0,KEY_QUERY_VALUE,&rParm);
RegGetValue(rParm,"TDay",0,1,pdwType,pvData,pcbData); //без этой строки не вылетает(
}
#define reg_parm "Software\\Microsoft\\Windows\\CurrentVersion"
......
//----------------устанавливаю парам в реестре
void SetupParm(char *InfoDay, char *Th, char *Tm){
HKEY runPar = NULL;
RegOpenKeyEx(HKEY_CURRENT_USER, reg_parm, 0, KEY_WRITE, &runPar);
RegSetValueEx(runPar,"TDay" ,0, REG_SZ, (PBYTE)InfoDay,10);
RegSetValueEx(runPar,"Th" ,0, REG_SZ, (PBYTE)Th,3);
RegSetValueEx(runPar,"Tm" ,0, REG_SZ, (PBYTE)Tm,3);
RegCloseKey(runPar);
}
//--------------читаю из реестра
void ReadParm(char *InfoDay, char *Th, char *Tm){
HKEY rParm;
LPDWORD pdwType;
PVOID pvData;
LPDWORD pcbData;
RegOpenKeyEx(HKEY_CURRENT_USER,reg_parm,0,KEY_QUERY_VALUE,&rParm);
RegGetValue(rParm,"TDay",0,1,pdwType,pvData,pcbData); //без этой строки не вылетает(
}
и выдает студия сообщение:Unhandled exception at 0x777ba42e in winTimer.exe: 0xC0000005: Access violation reading location 0x000000f4.
Код:
LPDWORD pdwType;
PVOID pvData;
LPDWORD pcbData;
PVOID pvData;
LPDWORD pcbData;
это объявление трёх указателей. в функции RegGetValue наеврняка производится попытка записи значений по этим адресам. но т.к. память под эти указатели не выделена, то всё это дело благополучно валиться
правильно будет объявить эти переменный как DWORD, LPVOID (и соответственно выделить под него память) и DWORD. ну и амперсандов наставить немного.
кароч книжку читать - вот совет