Avatar billede viht Nybegynder
02. november 2002 - 15:59 Der er 8 kommentarer og
1 løsning

ATT: Soreno

Jeg har forsøgt at replikere dit vellykkede forsøg på at hente de installerede applikationer på en maskine. Jeg har dog lidt problemer med at Enumerere værdierne i subnøglerne til ...CurrentVersion\Uninstall. Her er hvad jeg har indtil videre:

void getInstalledApplications() {

  TCHAR nameBuffer [MAX_PATH];
  TCHAR classBuffer [MAX_PATH];
  TCHAR dataBuffer [MAX_PATH];
  DWORD dwBuffSize, dwDataSize, dwRegType;
  DWORD dwNumSubKeys, dwNumValues,
  dwMaxValueLen,dwMaxValueNameLen, dwMaxClassLen,
  dwSecurity;
  FILETIME lastWriteTime;
  HKEY hKey;

 
  RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",
                0, KEY_ALL_ACCESS, &hKey );
               
  RegQueryInfoKey(hKey, classBuffer, &dwBuffSize, NULL, &dwNumSubKeys, &dwMaxValueLen, &dwMaxClassLen,
                  &dwNumValues, &dwMaxValueNameLen, &dwMaxValueLen, &dwSecurity, &lastWriteTime );
  int i, j;
 
  dwBuffSize = MAX_PATH;
  dwDataSize = MAX_PATH;
 
  DWORD  keyType, nameBufSize, dataBufSize;
  UCHAR  valueKeyName[64], valueKeyData[64];
 
  HKEY hSubKey;

  for ( i = 0; RegEnumKeyEx (hKey, i, nameBuffer,  &dwBuffSize, NULL, classBuffer,  &dwDataSize, &lastWriteTime) != ERROR_NO_MORE_ITEMS; i++) {

      if( RegOpenKeyEx( hKey, nameBuffer, 0, KEY_ALL_ACCESS, &hSubKey ) == ERROR_SUCCESS ) {
        for( j = 0, j = ERROR_SUCCESS; j == ERROR_SUCCESS; j++ ) {
            RegEnumValue( hSubKey, j, (CHAR*)valueKeyName, &nameBufSize, NULL, &keyType, (UCHAR*)valueKeyData, &dataBufSize );

            string valueKeyNameString = string((const char*)valueKeyName);
            string valueKeyDataString = string((const char*)valueKeyData);
              cout << "Keyvalue: " << valueKeyDataString << endl;

        }
      }
  }
}

Det er vist lidt rodet, men jeg mailer gerne.
Avatar billede viht Nybegynder
02. november 2002 - 16:14 #1
Nevermind.. har løst den :)
Avatar billede soreno Praktikant
02. november 2002 - 16:16 #2
:-)
Avatar billede soreno Praktikant
02. november 2002 - 16:22 #3
husk at lukke nøglerne igen, ellers har du et resourceleak..
Avatar billede viht Nybegynder
02. november 2002 - 16:41 #4
Jep, har tilføjet RegCloseKey.
Avatar billede soreno Praktikant
02. november 2002 - 16:45 #5
fik du nogensinde det der kald til dll at makke ret, jvf. spørgsmål sidste nat ?
Avatar billede viht Nybegynder
02. november 2002 - 16:54 #6
Ikke endnu nej. Jeg har heller ikke kigget på det. Jeg blev totalt bidt af registreringsdatabasen efter det bøvl :) Jeg kigger på det i morgen hvis jeg får tid.
Avatar billede nak-m Nybegynder
04. november 2002 - 13:21 #7
?
Avatar billede soreno Praktikant
04. november 2002 - 13:58 #8
Avatar billede viht Nybegynder
05. november 2002 - 16:54 #9
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester