Witam,
nie wiem, czy ten wątek nie powinien znaleźć się w dziale "Systemy operacyjne" , ale do rzeczy.
Polecam uwadze poradę Cyfrowego Barona nt. Rejestrowanie rozszerzenia pliku. Kod ten działa poprawnie jedynie w środowiskach Windows do wersji XP włącznie. Wykonanie wspomnianego kodu w systemie operacyjnym Windows Vista kończy się dwojako: wyświetleniem informacji o błędzie (Failed to set data for '') lub... brakiem komunikatu, ale wpis i tak nie zostaje w rejestrze umieszczony.
Z moich obserwacji wynika, że operacje na rejestrze w gałęzi HKEY_CLASSES_ROOT są chronione przez system operacyjny i wymagają uprawnień administratora. Operacje na innych gałęziach, np. HKEY_CURRENT_USER przeprowadzane są bez problemów. Sęk w tym, że aby dodać własne rozszerzenie lub zmodyfikować istniejące, trzeba operować na HKEY_CLASSES_ROOT.
Udało mi się "zmusić" program do pracy z uprawnieniami administratora (należy kliknąć prawym przyciskiem myszy ikonę programu i z menu wybrać Uruchom jako administrator lub utworzyć odpowiedni plik manifestu, przykład na: http://www.professionalvisualstudio.com/blog/2007/10/05/enabling-your-application-for-uac-on-vista/), ale nie rozwiązało to problemu - wpis do rejestru i tak nie jest dodawany (ale przynajmniej nie wyskakują żadne błędy ).
Poza tym chodzi o to, by wykonać całą operację w kodzie i "poza" użytkownikiem.
Istnieje jednak metoda obejścia tych zabezpieczeń. Np. "odpalany" pod Vistą IrfanView bez problemu integruje się z powłoką i omija to zabezpieczenie. Jak? To jest właśnie moje pytanie. W jaki sposób zarejestrować rozszerzenie pliku pod Vistą?
LiczÄ™ na komentarze i owocnÄ… dyskusjÄ™.
Pozdrawiam, melmo.