2010-09-28 7 views
5

W pliku .rgs są pewne informacje dotyczące rejestru i chcę wiedzieć, w jaki sposób informacje w pliku .rgs są dodawane do regresji?Jak działa plik .RGS?

Mam projektu AAA i wygeneruje plik AAA.DLL, i nie jest to plik xxx.rgs który zawiera informacje rejestru, a AAA.DLL jest zbudowany, to będzie być wdrożone na innym komputerze B, więc nie wiem, w jaki sposób informacje rejestru mogą zostać dodane na komputerze B, czy muszę zarejestrować AAA.dll przy użyciu polecenia regsvr32?

Odpowiedz

6

Zazwyczaj twój kod wywołuje CComModule::UpdateRegistryFromResource(), który z kolei przekazuje kontrolę do specjalnego mechanizmu zaimplementowanego w ATL, który wykonuje zadanie - analizuje zasób wygenerowany przez osadzenie pliku .rgs w module i edycję rejestru. ATL zawiera źródła, więc możesz po prostu przeczytać, jak to się robi.

+2

Także to, że używa ATL jest jedynym zamierzonym sposobem użycia plików .rgs: http://stackoverflow.com/questions/1594283/is-there-a-document-on-rgs-files-syntax – sharptooth

+0

Mam projekt AAA i wygeneruje plik AAA.DLL, a tam jest plik xxx.rgs zawierający informacje o rejestrze, a AAA.DLL jest zbudowany, a następnie zostanie zainstalowany na innej maszynie B, więc zastanawiam się, jak informacje rejestracyjne dodane w komputerze B, czy muszę zarejestrować AAA.dll przy użyciu polecenia regsvr32? –

+3

@ Collos_Liu: Twój projekt DLL zwykle będzie zawierał plik .rc, który będzie zawierał odniesienie do tego pliku .rgs. Po kompilacji DLL zawartość pliku .rgs jest emdebbed jako zasób. Później wywołasz regsvr32, ładuje bibliotekę DLL, uruchamia 'DllRegisterServer()', która z kolei wywołuje 'CComModule :: UpdateRegistryFromResource()', która ładuje zawartość pliku .rgs z zasobów tej biblioteki DLL, analizuje ją i modyfikuje rejestr. – sharptooth