Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Xp, a 7 problem

Ostatnio zmodyfikowano 2011-09-26 19:23
Autor Wiadomość
Aplauz
Temat założony przez niniejszego użytkownika
Xp, a 7 problem
» 2011-09-26 09:54:14
Witam,
Mam problem z kompilacją tego samego programu na dwóch systemach operacyjnych. Na Windows 7 program, który jest umieszczony niżej działa, bez problemu. Na Windows XP po skompilowaniu, programy się crashuje .
C/C++
#include <windows.h>
#include <iostream>
#include <list>
#include <conio.h>
#include <string>
using namespace std;

list < HKEY > dane;

int main()
{
    dane.push_back( HKEY_CURRENT_USER );
    dane.push_back( HKEY_LOCAL_MACHINE );
   
    list < HKEY >::iterator it;
    for( it = dane.begin(); it != dane.end(); it++ )
    {
       
       
        HKEY hkSoftware;
        LONG result;
        RegOpenKeyExA( * it, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_READ, & hkSoftware );
       
       
        DWORD dwMaxName, dwMaxData, dwMaxIndex;
       
        result = RegQueryInfoKeyA( hkSoftware, NULL, NULL, NULL, NULL, NULL, NULL, & dwMaxIndex,
        & dwMaxName, & dwMaxData, NULL, NULL );
       
        DWORD dwMaxName_ = dwMaxName, dwMaxData_ = dwMaxData;
       
        char * ValueName;
        char * Data;
       
        DWORD ValueType;
       
        for( DWORD i = 0; i < dwMaxIndex; i++ )
        {
           
            ValueName = new char[ 1024 ];
            Data = new char[ 1024 ];
           
            dwMaxName = 500;
            dwMaxData = 500;
           
            result = RegEnumValueA( hkSoftware, i, ValueName, & dwMaxName, NULL, & ValueType,( LPBYTE ) Data, & dwMaxData );
           
            if( result == ERROR_SUCCESS )
            {
               
                cout << ValueName << endl;
                cout << Data << endl;
               
            }
            else
                 cout << result << endl;
           
            memset( ValueName, '\0', 1024 );
            memset( Data, '\0', 1024 );
           
            ValueType = 0;
           
           
           
            result = RegQueryInfoKeyA( hkSoftware, NULL, NULL, NULL, NULL, NULL, NULL, & dwMaxIndex,
            & dwMaxName, & dwMaxData, NULL, NULL );
           
        }
       
        GlobalFree( ValueName );
        GlobalFree( Data );
    }
   
    getch();
    return 0;
}

Na XP nie wyświetla się żaden błąd, tylko zielona strzałeczka wskazuje na linijkę(tą bliżej return 0):
C/C++
result = RegQueryInfoKeyA( hkSoftware, NULL, NULL, NULL, NULL, NULL, NULL, & dwMaxIndex,
& dwMaxName, & dwMaxData, NULL, NULL );
Próbowałem już wiele razy rozwiązać ten problem, jednak ni w ząb nie mogę sobie z tym poradzić. Podkreślam, iż na Windows 7 program działa. Czy mógłby mi ktoś udzielić jakiejś wskazówki dotyczącej naprawy mojego programu?
PS. Nie wiem, czy to ma jakieś znaczenie, lecz na Win7 używam Visual C++ 2010, a na XP 2008.
P-41449
malan
» 2011-09-26 11:01:55
Sprawdź, czy klucz otwarto poprawnie.
P-41451
Aplauz
Temat założony przez niniejszego użytkownika
» 2011-09-26 11:14:49
Trochę to trwało, jednak w końcu udało mi się dopaść XP-ka : ]
Nie udało się wejść do klucza.
P-41452
malan
» 2011-09-26 19:23:27
Dlaczego się nie udało?
P-41470
« 1 »
  Strona 1 z 1