Widząc, że to pytanie jest oznaczone jako „vb.net”, muszę się zastanawiać, dlaczego próbujesz zarejestrować bibliotekę DLL, którą utworzyłeś w VB.NET. Aby można było używać z regsvr32, biblioteka DLL musi wyeksportować funkcje DllRegisterServeri DllUnregisterServer. Nie ma żadnego rejestru dla większości tworzonych bibliotek DLL.
Cody Gray
12
Co masz na myśli mówiąc, że nie działa lub nie jest przydatne? Czy otrzymujesz komunikat o błędzie? Co to mówi?
Cody Grey
Odpowiedzi:
68
Wpisz regsvr32 name.dllw wierszu polecenia (wykonywane w trybie podwyższonym!) I naciśnij „Enter”. Należy pamiętać, że name.dllnależy zastąpić nazwę biblioteki DLL, którą chcesz zarejestrować. Na przykład, jeśli chcesz zarejestrować plik iexplore.dll, wpisz regsvr32 iexplore.dll.
To zachowanie występuje, ponieważ plik Regsvr32.exe w folderze System32 jest wersją 64-bitową. Gdy uruchamiasz program Regsvr32 w celu zarejestrowania biblioteki DLL, domyślnie używasz wersji 64-bitowej.
Rozwiązanie z tego artykułu:
Aby rozwiązać ten problem, uruchom program Regsvr32.exe z folderu% SystemRoot% \ Syswow64. Na przykład wpisz następujące polecenia, aby zarejestrować bibliotekę DLL:
cd \windows\syswow64regsvr32 c:\filename.dll
To naprawdę powinna być prawidłowa odpowiedź. Rozumiem, że w jego oryginalnym poście składnia była niepoprawna, ale Rajkumar skomentował, że otrzymywał komunikat o błędzie, nawet przy użyciu poprawnej składni. To wymaga dwóch kroków do poprawnej odpowiedzi dla kogoś, kto szuka zamiast jednego. Najpierw do odpowiedzi wybranej jako poprawnej, a następnie podążając za łańcuchem komentarzy, kończąc na tym poście.
Rob
102
Jeśli biblioteka DLL jest 32- bitowa:
Skopiuj bibliotekę DLL do C: \ Windows \ SysWoW64 \
W wierszu polecenia z podwyższonym poziomem uprawnień:%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
jeśli biblioteka DLL jest 64- bitowa:
Skopiuj bibliotekę DLL do C: \ Windows \ System32 \
W wierszu polecenia z podwyższonym poziomem uprawnień:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Wiem, że wydaje się to niewłaściwe, ale tak to działa. Widzieć:
http://support.microsoft.com/kb/249873
Cytat: „Uwaga W 64-bitowej wersji systemu operacyjnego Windows istnieją dwie wersje pliku Regsv32.exe:
Wersja 64-bitowa to% systemroot% \ System32 \ regsvr32.exe.
Wersja 32-bitowa to% systemroot% \ SysWoW64 \ regsvr32.exe.
"
+1 dla „Wiem, że to wygląda na niewłaściwą stronę, ale tak to działa” z odsyłaczem do support.microsoft.com ... bez linku trudno w to uwierzyć.
Trevor Boyd Smith
6
„W podwyższonym cmd” jest bardzo ważne !!
shindigo,
4
Myślę, że nie musimy go kopiować do folderu system32 lub syswow64. Po prostu zarejestruj plik w dowolnym miejscu.
Nikos
30
W systemie x64 system32 jest przeznaczony dla wersji 64-bitowej, a syswow64 dla wersji 32-bitowej (a nie na odwrót, jak podano w innej odpowiedzi). WOW (Windows w systemie Windows) to 32-bitowy podsystem działający w ramach 64-bitowego podsystemu).
To bałagan w nazewnictwie i służy tylko do zmylenia, ale tak właśnie jest.
Jeszcze raz ...
syswow64 jest 32-bitowy, a NIE 64-bitowy.
system32 jest 64-bitowy, a NIE 32-bitowy.
W każdym z tych katalogów znajduje się regsrv32. Jeden jest 64-bitowy, a drugi 32-bitowy. To samo dotyczy odbcad32 i et al. (Jeśli chcesz zobaczyć 32-bitowe sterowniki ODBC, które nie pojawią się z domyślnym odbcad32 w systemie32, który jest 64-bitowy).
Dlaczego to ma znaczenie? regsvr32zadba o szczegóły, teoretycznie wykryje, czy rejestrujesz 32-bitową, czy 64-bitową bibliotekę DLL: stackoverflow.com/questions/18935163/ ...
Sk8erPeter
8
Otwórz menu Start i wpisz cmd w polu wyszukiwania Przytrzymaj Ctrl + Shift i naciśnij Enter
Spowoduje to uruchomienie wiersza polecenia w trybie administratora.
Jeśli już skopiowałeś plik nazwapliku.dll do folderu syswow64 i zmienisz katalog roboczy na syswow64 w wierszu poleceń, wtedy wpisanie „c: \” w „regsvr32 c: \ filename.dll” nie jest konieczne. Krótko mówiąc, „regsvr32 c: \ filename.dll” powinno brzmieć „regsvr32 filename.dll”
Josh McKearin,
6
Jeśli biblioteka DLL jest 32-bitowa:
Skopiuj bibliotekę DLL do C: \ Windows \ SysWoW64 \
Wszystko tutaj zawodziło jako zła ścieżka. Wtedy przypomniałem sobie sztuczkę ze starego Win95. Otwórz folder programu, w którym znajduje się plik .dll, otwórz C: / Windows / System32, przewiń w dół do regsvr32 i przeciągnij i upuść plik dll z folderu programu do rgsrver32. Boom, gotowe.
to działa, ale może być problematyczne, jeśli musisz uruchomić to jako administrator.
workabyte
3
Znajomość komunikatu o błędzie byłaby raczej cenna. Ma na celu dostarczenie informacji, nawet jeśli nie ma to dla Ciebie sensu, ale dla nas. Będąc zmuszonym zgadywać, powiedziałbym, że biblioteka DLL jest 32-bitowym filtrem DirectX. W takim przypadku powinno to być właściwe postępowanie:
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
Musi to zostać uruchomione w wierszu polecenia z podwyższonym poziomem uprawnień, aby UAC nie mógł zatrzymać wymaganego dostępu do rejestru. Zadaj więcej pytań na ten temat na superuser.com
Właśnie przetestowałem tę niezwykle prostą metodę i działa idealnie - ale używam wbudowanego konta administratora, więc nie muszę przeskakiwać przez obręcze, aby uzyskać wyższe uprawnienia.
Poniższy plik wsadowy zwalnia użytkownika z konieczności przenoszenia plików do / z folderów systemowych. Pozostawia również systemowi Windows zastosowanie odpowiedniej wersjiRegsvr32 .
INSTRUKCJE:
W folderze zawierającym bibliotekę ( -.dlllub -.ax) plik, który chcesz zarejestrować, otwórz nowy plik tekstowy i wklej w JEDNEJ z poniższych procedur:
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
copy %1 C:\Windows\System32
regsvr32 "%nx1"
echo END BATCH FILE
pause
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
copy %1 C:\Windows\SysWOW64
regsvr32 "%nx1"
echo END BATCH FILE
pause
Zapisz nowy plik tekstowy jako plik wsadowy ( -.bat); następnie po prostu przeciągnij i upuść plik -.dlllub -.axna wierzchu pliku wsadowego.
Jeśli UAC nie daje możliwości uruchomienia pliku wsadowego jako administrator, może być konieczne ręczne podniesienie uprawnień (instrukcje dotyczą systemu Windows 7):
Kliknij prawym przyciskiem myszy plik wsadowy;
Wybierz Create shortcut ;
Kliknij prawym przyciskiem myszy skrót;
Wybierz Properties ;
Kliknij Compatibility kartę;
Zaznacz pole oznaczone Run this program as administrator ;
Przeciągnij i upuść plik -.dlllub -.axna nowy skrót zamiast na plik wsadowy.
To jest to . Zdecydowałem się COPYzamiast tego, MOVEaby zapobiec niepowodzeniu jakichkolwiek dalszych prób związanych z UAC. Po pomyślnej rejestracji należy usunąć oryginalny plik biblioteki ( -.dlllub -.ax).
Nie martw się o kopie wykonane do folderu systemowego ( C:\Windows\System32lub C:\Windows\SysWOW64) przez poprzednie przebiegi - zostaną nadpisane za każdym razem, gdy uruchomisz plik wsadowy.
O ile nie uruchomiłeś niewłaściwego pliku wsadowego , w takim przypadku prawdopodobnie będziesz chciał usunąć kopię utworzoną w niewłaściwym folderze systemowym ( C:\Windows\System32lubC:\Windows\SysWOW64 ) przed uruchomieniem odpowiedniego pliku wsadowego, ... lub ...
Pomóż systemowi Windows wybrać odpowiedni plik biblioteki do zarejestrowania, w pełni kwalifikując jego lokalizację katalogu.
Z prawego pliku wsadowego skopiuj ścieżkę do folderu systemowego
Jeśli 64-bitowy: C:\Windows\System32
Jeśli 32-bitowy: C:\Windows\SysWOW64
Wklej go w następnym wierszu, aby poprzedzał %nx1
Jeśli 64-bitowy: regsvr32 "C:\Windows\System32\%nx1"
Jeśli 32-bitowy: regsvr32 "C:\Windows\SysWOW64\%nx1"
Wklej ścieżkę w cudzysłów
Wstaw ukośnik odwrotny, aby oddzielić %nx1od ścieżki folderu systemowego
lub ...
Uruchom ten plik wsadowy strzelby, który (w kolejności):
Wykonaj czyszczenie przerwanych procesów rejestracji
Cofnij wszystkie procesy rejestracji zakończone przez plik biblioteki;
Usuń wszystkie kopie pliku biblioteki, które zostały zapisane w dowolnym folderze systemowym;
Wstrzymaj, aby umożliwić zamknięcie pliku wsadowego w tym momencie (i uruchomienie innego, jeśli chcesz).
Spróbuj przeprowadzić instalację 64-bitową na pliku biblioteki
Skopiuj plik biblioteki do C:\Windows\System32 ;
Zarejestruj plik biblioteki jako proces 64-bitowy;
Wstrzymaj, aby w tym momencie zamknąć plik wsadowy.
Cofnij instalację 64-bitową
Cofnij wszelkie rejestracje pliku biblioteki jako proces 64-bitowy;
Usuń plik biblioteki z C:\Windows\System32 ;
Wstrzymaj, aby umożliwić zamknięcie pliku wsadowego w tym momencie (i uruchomienie innego, jeśli chcesz).
Spróbuj przeprowadzić instalację 32-bitową na pliku biblioteki
Skopiuj plik biblioteki do C:\Windows\SystemWOW64
Zarejestruj plik biblioteki jako proces 32-bitowy;
Wstrzymaj, aby w tym momencie zamknąć plik wsadowy.
Run as administratorjest wyszarzony, gdy utworzyłem skrót do pliku bat. Jestem zalogowany jako administrator. Ponadto, jest to %nx1albo %n1?
Jon Grah
3
Istnieje różnica w systemie Windows 7. Logowanie jako administrator nie daje takich samych praw, jak w przypadku uruchamiania programu jako Administrator.
Przejdź do Start - Wszystkie programy - Akcesoria. Kliknij prawym przyciskiem myszy okno poleceń i wybierz „Uruchom jako administrator” Teraz zarejestruj bibliotekę dll normalnie przez: regsrvr32 xxx.dll
Część nieporozumień związanych z regsvr32 polega na tym, że w 64-bitowych oknach nazwa i ścieżka nie uległy zmianie, ale teraz rejestruje 64-bitowe biblioteki DLL. 32-bitowy regsvr32 istnieje w SysWOW64, nazwa, która wydaje się reprezentować aplikacje 64-bitowe. Jednak nazwa WOW64 odnosi się do systemu Windows w systemie Windows 64 lub bardziej wprost do systemu Windows w wersji 32-bitowej w systemie Windows 64-bitowym. Kiedy myślisz o tym w ten sposób, nazwa ma sens, nawet jeśli jest myląca w tym kontekście.
Nie mogę znaleźć mojego oryginalnego źródła na blogu MSDN, ale jest ono wymienione w tym artykule Wikipedii http://en.wikipedia.org/wiki/WoW64
Oto jak rozwiązałem ten problem na komputerze z systemem Win7 x64:
1 - komunikat o błędzie:
„CoCreateInstance () nie powiodło się. Sprawdź wpisy rejestru CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} i upewnij się, że jesteś zalogowany jako administrator”
2 - procedura naprawy:
Uruchom / wpisz cmd / RightMouse Kliknij cmd.exe i wybierz „Uruchom jako administrator”
wpisano: regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
regsvr32
, biblioteka DLL musi wyeksportować funkcjeDllRegisterServer
iDllUnregisterServer
. Nie ma żadnego rejestru dla większości tworzonych bibliotek DLL.Odpowiedzi:
Wpisz
regsvr32 name.dll
w wierszu polecenia (wykonywane w trybie podwyższonym!) I naciśnij „Enter”. Należy pamiętać, żename.dll
należy zastąpić nazwę biblioteki DLL, którą chcesz zarejestrować. Na przykład, jeśli chcesz zarejestrować plik iexplore.dll, wpiszregsvr32 iexplore.dll
.źródło
regsvr32
ścieżka do pliku .dll z nazwą pliku i rozszerzeniem i naciśnij enterCóż, nie określasz, czy jest to 32- czy 64-bitowa dll i nie dołączasz komunikatu o błędzie, ale zgaduję, że jest to ten sam problem, co opisany w tym artykule z bazy wiedzy : Komunikat o błędzie podczas uruchamiania programu Regsvr32.exe w 64-bitowym systemie Windows
Cytat z tego artykułu:
Rozwiązanie z tego artykułu:
źródło
Jeśli biblioteka DLL jest 32- bitowa:
Skopiuj bibliotekę DLL do C: \ Windows \ SysWoW64 \
W wierszu polecenia z podwyższonym poziomem uprawnień:
%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
jeśli biblioteka DLL jest 64- bitowa:
Skopiuj bibliotekę DLL do C: \ Windows \ System32 \
W wierszu polecenia z podwyższonym poziomem uprawnień:
%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Wiem, że wydaje się to niewłaściwe, ale tak to działa. Widzieć:
http://support.microsoft.com/kb/249873
Cytat: „Uwaga W 64-bitowej wersji systemu operacyjnego Windows istnieją dwie wersje pliku Regsv32.exe:
Wersja 64-bitowa to% systemroot% \ System32 \ regsvr32.exe.
Wersja 32-bitowa to% systemroot% \ SysWoW64 \ regsvr32.exe.
"
źródło
W systemie x64 system32 jest przeznaczony dla wersji 64-bitowej, a syswow64 dla wersji 32-bitowej (a nie na odwrót, jak podano w innej odpowiedzi). WOW (Windows w systemie Windows) to 32-bitowy podsystem działający w ramach 64-bitowego podsystemu).
To bałagan w nazewnictwie i służy tylko do zmylenia, ale tak właśnie jest.
Jeszcze raz ...
syswow64 jest 32-bitowy, a NIE 64-bitowy.
system32 jest 64-bitowy, a NIE 32-bitowy.
W każdym z tych katalogów znajduje się regsrv32. Jeden jest 64-bitowy, a drugi 32-bitowy. To samo dotyczy odbcad32 i et al. (Jeśli chcesz zobaczyć 32-bitowe sterowniki ODBC, które nie pojawią się z domyślnym odbcad32 w systemie32, który jest 64-bitowy).
źródło
regsvr32
zadba o szczegóły, teoretycznie wykryje, czy rejestrujesz 32-bitową, czy 64-bitową bibliotekę DLL: stackoverflow.com/questions/18935163/ ...Otwórz menu Start i wpisz cmd w polu wyszukiwania Przytrzymaj Ctrl + Shift i naciśnij Enter
Spowoduje to uruchomienie wiersza polecenia w trybie administratora.
Teraz wpisz:
regsvr32 MyComobject.dll
źródło
Wreszcie znalazłem rozwiązanie, po prostu uruchom CMD jako administrator, a następnie napisz
następnie napisz to
Mam nadzieję, że ta odpowiedź Ci pomoże
źródło
Jeśli biblioteka DLL jest 32-bitowa:
jeśli biblioteka DLL jest 64-bitowa:
źródło
Wszystko tutaj zawodziło jako zła ścieżka. Wtedy przypomniałem sobie sztuczkę ze starego Win95. Otwórz folder programu, w którym znajduje się plik .dll, otwórz C: / Windows / System32, przewiń w dół do regsvr32 i przeciągnij i upuść plik dll z folderu programu do rgsrver32. Boom, gotowe.
źródło
Znajomość komunikatu o błędzie byłaby raczej cenna. Ma na celu dostarczenie informacji, nawet jeśli nie ma to dla Ciebie sensu, ale dla nas. Będąc zmuszonym zgadywać, powiedziałbym, że biblioteka DLL jest 32-bitowym filtrem DirectX. W takim przypadku powinno to być właściwe postępowanie:
Musi to zostać uruchomione w wierszu polecenia z podwyższonym poziomem uprawnień, aby UAC nie mógł zatrzymać wymaganego dostępu do rejestru. Zadaj więcej pytań na ten temat na superuser.com
źródło
Właśnie przetestowałem tę niezwykle prostą metodę i działa idealnie - ale używam wbudowanego konta administratora, więc nie muszę przeskakiwać przez obręcze, aby uzyskać wyższe uprawnienia.
Poniższy plik wsadowy zwalnia użytkownika z konieczności przenoszenia plików do / z folderów systemowych. Pozostawia również systemowi Windows zastosowanie odpowiedniej wersji
Regsvr32
.INSTRUKCJE:
W folderze zawierającym bibliotekę (
-.dll
lub-.ax
) plik, który chcesz zarejestrować, otwórz nowy plik tekstowy i wklej w JEDNEJ z poniższych procedur:Zapisz nowy plik tekstowy jako plik wsadowy (
-.bat
); następnie po prostu przeciągnij i upuść plik-.dll
lub-.ax
na wierzchu pliku wsadowego.Jeśli UAC nie daje możliwości uruchomienia pliku wsadowego jako administrator, może być konieczne ręczne podniesienie uprawnień (instrukcje dotyczą systemu Windows 7):
Create shortcut
;Properties
;Compatibility
kartę;Run this program as administrator
;-.dll
lub-.ax
na nowy skrót zamiast na plik wsadowy.To jest to . Zdecydowałem się
COPY
zamiast tego,MOVE
aby zapobiec niepowodzeniu jakichkolwiek dalszych prób związanych z UAC. Po pomyślnej rejestracji należy usunąć oryginalny plik biblioteki (-.dll
lub-.ax
).Nie martw się o kopie wykonane do folderu systemowego (
C:\Windows\System32
lubC:\Windows\SysWOW64
) przez poprzednie przebiegi - zostaną nadpisane za każdym razem, gdy uruchomisz plik wsadowy.O ile nie uruchomiłeś niewłaściwego pliku wsadowego , w takim przypadku prawdopodobnie będziesz chciał usunąć kopię utworzoną w niewłaściwym folderze systemowym (
C:\Windows\System32
lubC:\Windows\SysWOW64
) przed uruchomieniem odpowiedniego pliku wsadowego, ... lub ...Pomóż systemowi Windows wybrać odpowiedni plik biblioteki do zarejestrowania, w pełni kwalifikując jego lokalizację katalogu.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
od ścieżki folderu systemowegoUruchom ten plik wsadowy strzelby, który (w kolejności):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
źródło
Run as administrator
jest wyszarzony, gdy utworzyłem skrót do pliku bat. Jestem zalogowany jako administrator. Ponadto, jest to%nx1
albo%n1
?Istnieje różnica w systemie Windows 7. Logowanie jako administrator nie daje takich samych praw, jak w przypadku uruchamiania programu jako Administrator.
Przejdź do Start - Wszystkie programy - Akcesoria. Kliknij prawym przyciskiem myszy okno poleceń i wybierz „Uruchom jako administrator” Teraz zarejestruj bibliotekę dll normalnie przez: regsrvr32 xxx.dll
źródło
Robiąc to, jeśli pojawi się kod błędu 0x80040201, wypróbuj rozwiązanie w DllRegisterServer nie powiodło się z kodem błędu 0x80040201 , ale upewnij się, że otworzyłeś wiersz polecenia jako Uruchom jako administrator .
źródło
Musi uruchomieniu
cmd.exe
wc:\windows\system32\ by administrator
Polecenia: do wyrejestrowania plików * .dll
regsvr32.exe /u C:\folder\folder\name.dll
Do rejestracji pliki * .dll
źródło
Część nieporozumień związanych z regsvr32 polega na tym, że w 64-bitowych oknach nazwa i ścieżka nie uległy zmianie, ale teraz rejestruje 64-bitowe biblioteki DLL. 32-bitowy regsvr32 istnieje w SysWOW64, nazwa, która wydaje się reprezentować aplikacje 64-bitowe. Jednak nazwa WOW64 odnosi się do systemu Windows w systemie Windows 64 lub bardziej wprost do systemu Windows w wersji 32-bitowej w systemie Windows 64-bitowym. Kiedy myślisz o tym w ten sposób, nazwa ma sens, nawet jeśli jest myląca w tym kontekście.
Nie mogę znaleźć mojego oryginalnego źródła na blogu MSDN, ale jest ono wymienione w tym artykule Wikipedii http://en.wikipedia.org/wiki/WoW64
źródło
Oto jak rozwiązałem ten problem na komputerze z systemem Win7 x64:
1 - komunikat o błędzie:
„CoCreateInstance () nie powiodło się. Sprawdź wpisy rejestru CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} i upewnij się, że jesteś zalogowany jako administrator”
2 - procedura naprawy:
Mam nadzieję że to pomoże !
źródło