void CMediaVisDlg::Enumerate() { CWaitCursor pCursor; HKEY hKey; if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("Software\\Shareaza\\Shareaza\\Plugins\\AudioVis"), NULL, KEY_READ, &hKey ) != ERROR_SUCCESS ) return; for ( DWORD nKey = 0 ; ; nKey++ ) { DWORD dwType, dwName = sizeof(TCHAR) * 128, dwCLSID = 64 * sizeof(TCHAR); TCHAR szName[128], szCLSID[64]; if ( RegEnumValue( hKey, nKey, szName, &dwName, NULL, &dwType, (LPBYTE)szCLSID, &dwCLSID ) != ERROR_SUCCESS ) break; if ( dwType != REG_SZ || dwCLSID / sizeof(TCHAR) != 39 || szCLSID[0] != '{' || szName[0] == '{' ) continue; szCLSID[ 38 ] = 0; CLSID pCLSID; if ( ! GUIDX::Decode( szCLSID, &pCLSID ) ) continue; if ( ! Plugins.LookupEnable( pCLSID, TRUE ) ) continue; if ( _tcsistr( szName, _T("wrap") ) ) { if ( ! EnumerateWrapped( szName, pCLSID, szCLSID ) ) { AddPlugin( szName, szCLSID, NULL ); } } else { AddPlugin( szName, szCLSID, NULL ); } } RegCloseKey( hKey ); }
void CMediaVisDlg::Enumerate() { CWaitCursor pCursor; HKEY hKey; if ( RegOpenKeyEx( HKEY_CURRENT_USER, REGISTRY_KEY _T("\\Plugins\\AudioVis"), NULL, KEY_READ, &hKey ) != ERROR_SUCCESS ) return; for ( DWORD nKey = 0 ; ; nKey++ ) { DWORD dwType, dwName = 256, dwCLSID = 64 * sizeof(TCHAR); TCHAR szName[256], szCLSID[64]; if ( RegEnumValue( hKey, nKey, szName, &dwName, NULL, &dwType, (LPBYTE)szCLSID, &dwCLSID ) != ERROR_SUCCESS ) break; if ( dwType != REG_SZ || dwCLSID / sizeof(TCHAR) != 39 || szCLSID[0] != '{' || szName[0] == '{' ) continue; szCLSID[ 38 ] = 0; CLSID pCLSID; if ( ! Hashes::fromGuid( szCLSID, &pCLSID ) ) continue; if ( ! Plugins.LookupEnable( pCLSID ) ) continue; if ( _tcsistr( szName, _T("wrap") ) ) { if ( ! EnumerateWrapped( szName, pCLSID, szCLSID ) ) { AddPlugin( szName, szCLSID, NULL ); } } else { AddPlugin( szName, szCLSID, NULL ); } } RegCloseKey( hKey ); }