Za obsługę skojarzeń plików odpowiada system operacyjny. Wskazujesz mu rozszerzenie twojego pliku, a następnie ścieżkę do głównego pliku wykonywalnego twojej aplikacji. Z tego co kojarzę to ścieżkę do tego pliku podaję jako pierwszy argument wiersza poleceń. Potem w programie musisz dodać obsługę w sytuacji kiedy taki argument zostanie podany. Można to zrobić ręcznie w panelu sterowania. Nie trzeba grzebać w rejestrze.
Nie wiem jak to jest w C++, ale w C# można z poziomu aplikacji dodać skojarzenie, ale głównie robi to instalator aplikacji. Podczas instalacji dodaje odpowiednie wpisy do rejestru odpowiedzialne właśnie za obsługę danego formatu pliku.