Próbowałem użyć następującego kodu:
cd c:\windows\system32
regsvr32.exe dllname.ax
Ale to nie działa dla mnie. Jak mogę zarejestrować plik DLL w systemie Windows 7 z 64-bitowym procesorem?
Próbowałem użyć następującego kodu:
cd c:\windows\system32
regsvr32.exe dllname.ax
Ale to nie działa dla mnie. Jak mogę zarejestrować plik DLL w systemie Windows 7 z 64-bitowym procesorem?
Odpowiedzi:
Wpisz regsvr32 name.dll
w wierszu polecenia (wykonywane w trybie podwyższonym!) I naciśnij „Enter”. Należy pamiętać, że name.dll
należy zastąpić nazwę biblioteki DLL, którą chcesz zarejestrować. Na przykład, jeśli chcesz zarejestrować plik iexplore.dll, wpisz regsvr32 iexplore.dll
.
regsvr32
ścieżka do pliku .dll z nazwą pliku i rozszerzeniem i naciśnij enter
Cóż, 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:
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\syswow64
regsvr32 c:\filename.dll
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.
"
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).
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
Wreszcie znalazłem rozwiązanie, po prostu uruchom CMD jako administrator, a następnie napisz
cd \windows\syswow64
następnie napisz to
regsvr32 c:\filename.dll
Mam nadzieję, że ta odpowiedź Ci pomoże
Jeśli biblioteka DLL jest 32-bitowa:
jeśli biblioteka DLL jest 64-bitowa:
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.
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ę ( -.dll
lub -.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 -.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
lub 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\System32
lub C:\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
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
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 .
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:
„CoCreateInstance () nie powiodło się. Sprawdź wpisy rejestru CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} i upewnij się, że jesteś zalogowany jako administrator”
Mam nadzieję że to pomoże !
regsvr32
, biblioteka DLL musi wyeksportować funkcjeDllRegisterServer
iDllUnregisterServer
. Nie ma żadnego rejestru dla większości tworzonych bibliotek DLL.