.NET Framework Version 2.0 がインストールされているかどうかを確認する方法(2)

C++ で書くならこんな感じ?

bool IsInstalledDotNetFramework20(){
    bool ret = false;
    HKEY hKey = 0;
    DWORD size;
    DWORD type;
    PBYTE p = NULL;
    if( ::RegOpenKeyExA( HKEY_LOCAL_MACHINE ,
                         "SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727" ,
                         0 , KEY_QUERY_VALUE , &hKey ) != ERROR_SUCCESS ){
        goto release;
    }
    if( ::RegQueryValueExA( hKey , "Install" , 0 , &type , NULL , &size ) != ERROR_SUCCESS ){
        goto release;
    }
    if( type != REG_DWORD ){
        goto release;
    }
    p = new BYTE[ size / sizeof( BYTE ) ];
    if( ::RegQueryValueExA( hKey , "Install" , 0 , &type , p , &size ) != ERROR_SUCCESS ){
        goto release;
    }
    if( (*((PDWORD)p)) == 1 ){
        ret = true;
    }
release:;
    delete p;
    if( hKey != 0 ){
        ::RegCloseKey( hKey );
    }
    return ret;
}