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?

Rajkumar Reddy
źródło
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.

Harold Sota
źródło
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

Hans Olsson
źródło
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.
"

Liam
źródło
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).

phill
źródło
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

Sushant Rath
źródło
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

Hayder Chebaane
źródło
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
Dragos
źródło
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.

om 1
źródło
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

Hans Passant
źródło
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
Wdzięczny użytkownik
źródło
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

Werner Spreeuwenberg
źródło
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
lails
źródło
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

Adam
źródło
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 !

SZTUKI LAOMUZYCZNE
źródło