Jak zarejestrować plik DLL w 64-bitowym systemie Windows 7?


101

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?


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.


5
regsvr32 ścieżka do pliku .dll z nazwą pliku i rozszerzeniem i naciśnij enter
— RK Sharma,

202

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


13
Dlaczego nie jest to wybrana odpowiedź?
— Mike Devenney

5
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.
"


26
+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).


1
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.

Teraz wpisz: regsvr32 MyComobject.dll


6

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 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:

  1. Skopiuj bibliotekę DLL do C: \ Windows \ SysWoW64 \
  2. W podwyższonym cmd:% windir% \ SysWoW64 \ regsvr32.exe% windir% \ SysWoW64 \ namedll.dll

jeśli biblioteka DLL jest 64-bitowa:

  1. Skopiuj bibliotekę DLL do C: \ Windows \ System32 \
  2. W podwyższonym cmd:% windir% \ System32 \ regsvr32.exe% windir% \ System32 \ namedll.dll

6

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.


2
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


3

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):

    1. Kliknij prawym przyciskiem myszy plik wsadowy;
    2. Wybierz Create shortcut ;
    3. Kliknij prawym przyciskiem myszy skrót;
    4. Wybierz Properties ;
    5. Kliknij Compatibility kartę;
    6. Zaznacz pole oznaczone Run this program as administrator ;
    7. Przeciągnij i upuść plik -.dlllub -.axna 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.

    1. Z prawego pliku wsadowego skopiuj ścieżkę do folderu systemowego
      • Jeśli 64-bitowy: C:\Windows\System32
      • Jeśli 32-bitowy: C:\Windows\SysWOW64
    2. 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):

    1. 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).
    2. 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.
    3. 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).
    4. 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.
    5. Usuń oryginalną, niezarejestrowaną kopię pliku biblioteki

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



3

Musi uruchomieniu cmd.exewc:\windows\system32\ by administrator

Polecenia: do wyrejestrowania plików * .dll

regsvr32.exe /u C:\folder\folder\name.dll

Do rejestracji pliki * .dll

regsvr32.exe C:\folder\folder\name.dll

2

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


1

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
  • zrestartuj Win 7 i wróć do biznesu!

Mam nadzieję że to pomoże !

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.