2011-08-11 22 views
11

Posiadam kilka starych aplikacji VB6, których obecnie nie można zapisać w .NET. Te stare aplikacje używają ADO i kompilują dobrze na moim komputerze XP. Od momentu przejścia na komputer z systemem Windows 7 aplikacje kompilują się dobrze, ale gdy są wdrażane (na komputerach XP), pojawiają się błędy. Jest to znany problem w tym artykule Microsoft omawia:Uzyskiwanie aplikacji ADO VB6 do pracy w systemie Windows 7

http://support.microsoft.com/kb/2517589

W artykule dać bardzo szczegółowe wyjaśnienie obejście, co wiązało kopiowania „.tlb” plik i zarejestrowanie go za pomocą «regtlibv12». Gdy próbuję go zarejestrować, otrzymuję komunikat o błędzie:

RegisterTypeLib C: \ Common Files Program Files \ \ System \ ado \ msado60_Backcompat.tlb failed: 80029c4a

Próbowałem również ten rejestracji przy użyciu starego "regtlib.exe" w folderze Windows, ale mam ten błąd:

LoadTypeLib C: \ Common Files Program Files \ \ system \ ado \ msado60_Backcompat.tlb failed: 80029c4a

Bo tego nie mogę conti nuż przy pracy. Byłbym bardzo wdzięczny za wszelkie wskazówki, które ktoś mógłby mi dać, jak poprawnie zarejestrować ten plik.

Z góry dziękuję!

+4

Nienawidzę tego problemu. Obecnie używam wirtualnej maszyny Windows XP wyłącznie do kompilowania materiałów związanych z ADO. – GSerg

+1

Sprawdź dziennik zdarzeń pod kątem przyczyny niepowodzenia polecenia regtlibv12. Czy uruchomiłeś też okno cmd jako administrator? – jac

+0

Zaskoczyło mnie to od dłuższego czasu, dobrze wiedzieć, że nie jestem jedyny! –

Odpowiedz

13

Umieść plik .tlb w odpowiednim miejscu, jak

C:\Program Files\Common Files\System\ado 

Następnie otwórz nowy projekt w IDE VB6 (podwyższona, to znaczy jako administrator). Wybierz Project | References ... następnie kliknij przycisk Browse. Przejdź do nowego pliku .TLB i otwórz go. Zaznacz to pole, aby wybrać pozycję i zamknąć okno dialogowe Referencje.

To powinno być teraz zarejestrowane.

Jeśli jesteś zdesperowany, spróbuj VB Type Library Registration Utility.

+0

Świetna sugestia, Bob. Udało mi się dodać odniesienie do mojego projektu. Jednak nie "zarejestrowano" go dla innych projektów - musiałem dodać go do każdego projektu ręcznie. To jest 10 razy lepsze niż moje poprzednie rozwiązanie (przy użyciu maszyny wirtualnej XP do tworzenia aplikacji). Dziękuję bardzo za rozwiązanie! – Loki70

+0

Przejdź do 'C: \ Program Files (x86) \ Microsoft Visual Studio \ VB98' i kliknij prawym przyciskiem myszy' VB6.EXE'. Wybierz opcję "Uruchom jako administrator". Powtórz kroki z odpowiedzi, aby trwale zarejestrować TLB. – wqw

+0

wqw - Twoja sugestia działa dobrze. Kiedy podążyłem za twoją procedurą, TLB zdawał się być na stałe zarejestrowany. Dziękuję bardzo! – Loki70

8

Prawdopodobnie pobrano plik jako C:\temp\Msado60_Backcompat_i386.tlb i nie zmieniono jego nazwy. Przykładem jest rejestracja C:\temp\Msado60_Backcompat.tlb (uwaga, nr _i386).

Uruchom polecenie, podając poprawną nazwę pliku.

+0

Dobrze - NIE zmieniłem nazwy pliku po pobraniu go i instrukcje mówią o zarejestrowaniu go bez "_i386". Ponieważ mam to teraz działa, nie zamierzam niczego cofać, ale jest to dobra sugestia. – Loki70

3

Aby zaktualizować tę listę odpowiedzi w oparciu o bardziej aktualne informacje, firma Microsoft opublikowała numer KB 2640696, który rozwiązuje ten problem w bardziej prosty sposób. Ta łata znacznie ułatwia wdrażanie na komputerach budowanych i rozwiązuje również problem niższego poziomu.

Bardziej kompletny obraz łaty można znaleźć na następującej stronie: blog post.