Чтение регистров
От: Аноним  
Дата: 07.03.07 15:55
Оценка:
Народ подскажите
почему у меня не выводет значение регистров?

void QueryKey(HKEY hKey) 
{
    TCHAR    achKey[MAX_KEY_LENGTH];  
    DWORD    cbName;                   
    TCHAR    achClass[MAX_PATH] = TEXT(""); 
    DWORD    cchClassName = MAX_PATH;  
    DWORD    cSubKeys=0;               
    DWORD    cbMaxSubKey;              
    DWORD    cchMaxClass;              
    DWORD    cValues;              
    DWORD    cchMaxValue;          
    DWORD    cbMaxValueData;       
    DWORD    cbSecurityDescriptor; 
    FILETIME ftLastWriteTime;      
 
    DWORD i, retCode; 
 
    TCHAR  achValue[MAX_VALUE_NAME]; 
    DWORD cchValue = MAX_VALUE_NAME; 
     
    retCode = RegQueryInfoKey(
        hKey,                   
        achClass,                
        &cchClassName,           
        NULL,                    
        &cSubKeys,               
        &cbMaxSubKey,            
        &cchMaxClass,            
        &cValues,                
        &cchMaxValue,            
        &cbMaxValueData,         
        &cbSecurityDescriptor,   
        &ftLastWriteTime);       
 
    // Enumerate the subkeys, until RegEnumKeyEx fails.
    
    if (cSubKeys)
    {
        printf( "\nNumber of subkeys: %d\n", cSubKeys);

        for (i=0; i<cSubKeys; i++) 
        { 
            cbName = MAX_KEY_LENGTH;
            retCode = RegEnumKeyEx(hKey, i,achKey,&cbName,NULL,NULL,NULL,&ftLastWriteTime); 
            if (retCode == ERROR_SUCCESS) 
            {
               _tprintf(TEXT("(%d) %s\n"), i+1, achKey);
                
            }
        }
    } 
 
    // Enumerate the key values. 

    if (cValues) 
    {
        printf( "\nNumber of values: %d\n", cValues);

        for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++) 
        { 
            cchValue = MAX_VALUE_NAME; 
            achValue[0] = '\0'; 
            retCode = RegEnumValue(hKey, i,achValue,&cchValue,NULL,NULL,NULL,NULL);
 
            if (retCode == ERROR_SUCCESS ) 
            { 
                _tprintf(TEXT("(%d) %s\n"), i+1, achValue); 
            } 
        }
    }

}



08.03.07 05:26: Перенесено модератором из 'C/C++' — Павел Кузнецов
Re: Чтение регистров
От: Zigmar Израиль  
Дата: 07.03.07 19:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Народ подскажите

А>почему у меня не выводет значение регистров?
(snap-snap)
А>
А>            retCode = RegEnumValue(hKey, i,achValue,&cchValue,NULL,NULL,NULL,NULL);
А>


Заходя в тему ожидал увидеть кучу ассемблерного кода
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
Re[2]: Чтение регистров
От: Аноним  
Дата: 07.03.07 19:52
Оценка:
Z>Заходя в тему ожидал увидеть кучу ассемблерного кода
ну я и пишу
только он в этот кусок кода не заxoдет



  if (cValues) 
    {
        printf( "\nNumber of values: %d\n", cValues);

        for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++) 
        { 
            cchValue = MAX_VALUE_NAME; 
            achValue[0] = '\0'; 
            retCode = RegEnumValue(hKey, i,achValue,&cchValue,NULL,NULL,NULL,NULL);
 
            if (retCode == ERROR_SUCCESS ) 
            { 
                _tprintf(TEXT("(%d) %s\n"), i+1, achValue); 
            } 
        }
    }
Re[2]: Чтение регистров
От: int13h Украина  
Дата: 08.03.07 00:55
Оценка:
Здравствуйте, Zigmar, Вы писали:
Z>Заходя в тему ожидал увидеть кучу ассемблерного кода
Я тоже
Re[3]: Чтение регистров
От: Аноним  
Дата: 08.03.07 06:51
Оценка:
Здравствуйте, int13h, Вы писали:

I>Здравствуйте, Zigmar, Вы писали:

Z>>Заходя в тему ожидал увидеть кучу ассемблерного кода
I>Я тоже
а по теме есть что то?
Re: Чтение регистров
От: Аноним  
Дата: 08.03.07 07:52
Оценка:
registry переводится как "реестр", а не "регистры"
Re[2]: Чтение регистров
От: Аноним  
Дата: 08.03.07 08:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>registry переводится как "реестр", а не "регистры"

не ну неужели не кому помоч короме как вупендреватся.
Re[3]: Чтение регистров
От: Аноним  
Дата: 08.03.07 09:07
Оценка:
"регистры" это совсем не то что ты спрашиваешь. Видишь ли твоя мессага аналогична мессаге на каком нить кулинарном форуме с заголовком "Готовка яиц" а в теме вдруг оказывается что человек хочет правильно почистить рыбу.
Re[4]: Чтение регистров
От: Аноним  
Дата: 08.03.07 09:45
Оценка:
имеется следуюшая иирарxия.
HKEY_CURRENT_USER\Software\Step By Step\Test_Logo и регистр blabla со значением.
теперь наго прочитать регистр blabla.
делаю так


void Query_Value(){
CRegKey key;
long status = key.Open(HKEY_CURRENT_USER,L"Software\\Step By Step\\Test_Logo",KEY_READ);
if(status == ERROR_SUCCESS){
    char setting[256];
    //char *setting = new char[256];
    //memset(&setting,'\0',256);
    
    DWORD setting_size = sizeof(setting);
    status = key.QueryValue((LPTSTR)setting,L"blabla",&setting_size);
    if(status == ERROR_SUCCESS){
        std::string str = setting;
        std::cout<<str.c_str();

    }
    key.Close();
}
}
Re[5]: Чтение регистров
От: Аноним  
Дата: 08.03.07 18:03
Оценка:
Здравствуйте, Аноним, Вы писали:
народ задолбался я уже с этими реесторами что не так не как нечитает

void Create_(){
    CRegKey key;
    long  status = key.Create(HKEY_CURRENT_USER,L"Software\\Step By Step");
    if(status == ERROR_SUCCESS){
        status = key.Create(key.m_hKey,L"Test_Logo");
        key.SetValue(12,L"blabla");
        if(status == ERROR_SUCCESS){
            //std::cout<<"UPS"<<std::endl;
        }
    }
    
}

вот создал все ок а вот прочитать не
CRegKey key;
LONG status = key.Open(HKEY_CURRENT_USER,L"Software",KEY_READ);
if(status == ERROR_SUCCESS){
    char setting[256];
    DWORD setting_size = sizeof(setting);
    DWORD valuesCount = 0;
    DWORD maxValueNameLen = 0;
    DWORD maxValueLen = 0;

    
    status = key.QueryStringValue(L"Step By Step",(LPTSTR)setting,&setting_size);
    if(status == ERROR_SUCCESS){
        std::string str = setting;
        std::cout<<str.c_str();
    }
    key.Close();
}
Re[6]: Чтение регистров
От: gear nuke  
Дата: 09.03.07 03:05
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> вот создал все ок а вот прочитать не

А>
А>CRegKey key;
А>LONG status = key.Open(HKEY_CURRENT_USER,L"Software",KEY_READ);
А>if(status == ERROR_SUCCESS){
А>    char setting[256];

А>    status = key.QueryStringValue(L"Step By Step",(LPTSTR)setting,&setting_size);
А>    if(status == ERROR_SUCCESS){
А>        std::string str = setting;
А>


Каст к LPTSTR — традиционный признак неправильного использования TCHAR. Данный проект компилируется как UNICODE, поэтому TCHAR на самом деле wchar_t и присваивание к std::string даёт лажу. Ищите typedef tstring
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.