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


Автор: vadimled 3.10.2006, 19:15
Я написал счетчик,который бы блокировал программу после определенного количества включений(в данном случае 650-850 включений,в зависимости от rand()). Но после 128ми включений в моем узле реестра("Nutral") появляеться жутко большая цифра и вся работа на смарку.
Помогите разобраться,пожалуйста.
Вот прога:
Код

#define MAX_KEY_BUFFER    80
    int w=0;

    srand( (unsigned)time( NULL )%650 );
    for(w=0; ;){
        if(w>=650 && w<=850)
            break;
        w= rand()%850;
    }

    HKEY hk; 
    DWORD dwData = 0; 
    DWORD    Type, BuffLen = MAX_KEY_BUFFER;
    TCHAR    LangKeyValue[MAX_KEY_BUFFER];
    LONG lRet;

    lRet = RegOpenKeyEx(HKEY_CURRENT_USER,"Nutral",0,KEY_ALL_ACCESS,&hk);
    if( lRet != ERROR_SUCCESS ){ 
        RegCreateKey(HKEY_CURRENT_USER,"Nutral", &hk); 
        RegSetValueEx(hk ,"Nutral",0,REG_DWORD,(LPBYTE) &dwData,sizeof(DWORD));
    }
    else{
        RegQueryValueEx(hk,"Nutral",0,&Type,(LPBYTE)LangKeyValue, &BuffLen);
        dwData= (DWORD)LangKeyValue[0];
        dwData++;
        RegSetValueEx(hk ,"Nutral",  // value name 
            0,                 // must be zero 
            REG_DWORD,         // value type 
            (LPBYTE) &dwData,  // pointer to value data 
            sizeof(DWORD)); 
    }
    RegCloseKey(hk);
    if( dwData >=(DWORD)w )
        exit(0);  


Автор: Damarus 3.10.2006, 19:47
Здесь ошибка:
Цитата(vadimled @  3.10.2006,  20:15 Найти цитируемый пост)
dwData= (DWORD)LangKeyValue[0];


Автор: Earnest 4.10.2006, 07:21
Действительно,  128 нормальных запусков ни на что не наводят?
Как, по твоему, большое число может храниться в одном байте? 

Автор: vadimled 4.10.2006, 09:41
Да,действительно.Что-то я тормознул.
Спасибо за совет.

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