Bagaimana cara mendaftarkan file DLL di Windows 7 64-bit?


101

Saya telah mencoba menggunakan kode berikut:

cd c:\windows\system32
regsvr32.exe dllname.ax

Tapi ini tidak berhasil untuk saya. Bagaimana cara mendaftarkan file DLL di Windows 7 dengan prosesor 64-bit?


Melihat pertanyaan ini diberi tag "vb.net", saya heran mengapa Anda mencoba mendaftarkan DLL yang Anda buat di VB.NET. Untuk digunakan dengan regsvr32, DLL harus mengekspor fungsi DllRegisterServerdan DllUnregisterServer. Tidak ada daftar sebagian besar DLL yang Anda buat sama sekali.
Cody Gray

12
Apa yang Anda maksud dengan tidak berfungsi atau tidak berguna? Apakah Anda mendapatkan pesan kesalahan? Apa yang dikatakan?
Cody Gray

Jawaban:


68

Ketik regsvr32 name.dlldi Command Prompt (dijalankan dalam mode tinggi!) Dan tekan "Enter." Perhatikan bahwa name.dllharus diganti dengan nama DLL yang ingin Anda daftarkan. Misalnya, jika Anda ingin mendaftarkan iexplore.dll, ketik regsvr32 iexplore.dll.


5
regsvr32 jalur file .dll dengan nama file dan ekstensi dan tekan enter
RK Sharma

202

Nah, Anda tidak menentukan apakah itu dll 32 atau 64 bit dan Anda tidak menyertakan pesan kesalahan, tetapi saya akan menebak bahwa itu masalah yang sama seperti yang dijelaskan dalam artikel KB ini: Pesan Kesalahan Saat Anda Menjalankan Regsvr32.exe pada Windows 64-Bit

Kutipan dari artikel itu:

Perilaku ini terjadi karena berkas Regsvr32.exe di folder System32 adalah versi 64-bit. Ketika Anda menjalankan Regsvr32 untuk mendaftarkan DLL, Anda menggunakan versi 64-bit secara default.

Solusi dari artikel itu:

Untuk mengatasi masalah ini, jalankan Regsvr32.exe dari map% SystemRoot% \ Syswow64. Misalnya, ketikkan perintah berikut untuk mendaftarkan DLL: cd \windows\syswow64 regsvr32 c:\filename.dll


13
Mengapa ini bukan jawaban yang dipilih?
Mike Devenney

5
Ini seharusnya jawaban yang benar. Saya dapat memahami bahwa dalam posting aslinya sintaksnya salah tetapi Rajkumar berkomentar bahwa dia menerima pesan kesalahan bahkan ketika menggunakan sintaks yang benar. Ini membutuhkan dua langkah ke jawaban yang benar untuk seseorang yang menelusuri, bukan satu. Pertama ke jawaban yang dipilih sebagai benar, kemudian mengikuti rantai komentar, berakhir di posting ini.
Rob

102

Jika DLL adalah 32 bit:

Salin DLL ke C: \ Windows \ SysWoW64 \
Dalam ditinggikan command prompt:%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

jika DLL adalah 64 bit:

Salin DLL ke C: \ Windows \ System32 \
Dalam ditinggikan command prompt:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

Saya tahu ini kelihatannya salah, tapi begitulah cara kerjanya. Lihat:

http://support.microsoft.com/kb/249873
Kutipan: "Catatan Pada versi 64-bit sistem operasi Windows, ada dua versi file Regsv32.exe:
Versi 64-bit adalah% systemroot% \ System32 \ regsvr32.exe.
Versi 32-bit adalah% systemroot% \ SysWoW64 \ regsvr32.exe.
"


26
+1 untuk "Saya tahu sepertinya salah, tapi begitulah cara kerjanya" dengan tautan ke support.microsoft.com ... tanpa tautan yang sulit dipercaya.
Trevor Boyd Smith

6
"Dalam cmd yang ditinggikan" sangat penting !!
shindigo

4
Saya tidak berpikir kita harus menyalinnya ke folder system32 atau syswow64. Cukup daftarkan file tersebut di mana pun itu berada.
Nikos

30

Pada sistem x64, system32 untuk 64 bit dan syswow64 untuk 32 bit (bukan sebaliknya seperti yang dinyatakan dalam jawaban lain). WOW (Windows di Windows) adalah subsistem 32 bit yang berjalan di bawah subsistem 64 bit).

Ini berantakan dalam istilah penamaan, dan hanya berfungsi untuk membingungkan, tapi begitulah adanya.

Lagi ...

syswow64 adalah 32 bit, BUKAN 64 bit.

system32 adalah 64 bit, BUKAN 32 bit.

Ada regsrv32 di setiap direktori ini. Satu adalah 64 bit, dan yang lainnya 32 bit. Ini adalah kesepakatan yang sama dengan odbcad32 dan et al. (Jika Anda ingin melihat driver ODBC 32-bit yang tidak akan muncul dengan odbcad32 default di system32 yaitu 64-bit.)


1
Mengapa itu penting? regsvr32akan mengurus detailnya, secara teoritis akan mendeteksi apakah Anda mendaftarkan DLL 32 bit atau 64 bit: stackoverflow.com/questions/18935163/…
Sk8erPeter

8

Buka menu start dan ketik cmd ke dalam kotak pencarian. Tahan Ctrl + Shift dan tekan Enter

Ini menjalankan Command Prompt dalam mode Administrator.

Sekarang ketik: regsvr32 MyComobject.dll


6

Akhirnya saya menemukan solusinya jalankan CMD sebagai administrator lalu tulis

cd \windows\syswow64

lalu tulis ini

regsvr32 c:\filename.dll

Saya harap jawaban itu akan membantu Anda


Jika Anda telah menyalin namafile.dll ke folder syswow64, dan Anda mengubah direktori kerja ke syswow64 di prompt perintah, maka "c: \" di "regsvr32 c: \ namafile.dll" tidak diperlukan. Singkatnya, "regsvr32 c: \ namafile.dll" harus membaca "regsvr32 namafile.dll"
Josh McKearin

6

Jika DLL adalah 32 bit:

  1. Salin DLL ke C: \ Windows \ SysWoW64 \
  2. Di cmd yang ditinggikan:% windir% \ SysWoW64 \ regsvr32.exe% windir% \ SysWoW64 \ namesll.dll

jika DLL adalah 64 bit:

  1. Salin DLL ke C: \ Windows \ System32 \
  2. Di cmd yang ditinggikan:% windir% \ System32 \ regsvr32.exe% windir% \ System32 \ namesll.dll

6

Semuanya di sini gagal karena jalan yang salah. Kemudian saya teringat trik dari masa lalu Win95. Buka folder program tempat .dll berada, buka C: / Windows / System32 gulir ke bawah ke regsvr32 dan seret dan jatuhkan dll dari folder program ke rgsrver32. Boom, selesai.


2
ini berfungsi tetapi bisa menjadi masalah jika Anda perlu menjalankan ini sebagai admin.
workabyte

3

Mengetahui pesan kesalahan akan lebih bermanfaat. Ini dimaksudkan untuk memberikan info, meskipun tidak masuk akal bagi Anda, hal itu bagi kami. Dipaksa untuk menebak, menurut saya DLL adalah filter DirectX 32-bit. Dalam hal ini ini harus menjadi tindakan yang tepat:

cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax

Ini harus dijalankan pada prompt perintah yang ditinggikan sehingga UAC tidak dapat menghentikan akses registri yang diperlukan. Ajukan lebih banyak pertanyaan tentang ini di superuser.com


3

Saya baru saja menguji metode yang sangat sederhana ini dan berfungsi dengan sempurna - tetapi saya menggunakan akun Administrator bawaan, jadi saya tidak perlu melewati rintangan untuk mendapatkan hak istimewa yang lebih tinggi.

File batch berikut mengurangi kebutuhan pengguna untuk memindahkan file masuk / keluar dari folder sistem. Itu juga menyerahkan pada Windows untuk menerapkan versi yang tepat Regsvr32.

PETUNJUK:

  • Di folder yang berisi file perpustakaan ( -.dllatau -.ax) yang ingin Anda daftarkan, buka file teks baru dan tempelkan salah satu rutinitas di bawah ini:

    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
    
  • Simpan file teks baru Anda sebagai file batch ( -.bat); lalu cukup seret-dan-jatuhkan file -.dllatau Anda -.axdi atas file batch.

  • Jika UAC tidak memberi Anda kesempatan untuk menjalankan file batch sebagai Administrator, Anda mungkin perlu meningkatkan hak akses secara manual (instruksi untuk Windows 7):

    1. Klik kanan pada file batch;
    2. Pilih Create shortcut;
    3. Klik kanan pada pintasan;
    4. Pilih Properties;
    5. Klik Compatibilitytab;
    6. Centang kotak berlabel Run this program as administrator;
    7. Seret dan lepas file -.dllatau Anda -.axdi atas pintasan baru, bukan di file batch.

Itu dia . Saya memilih COPY daripada MOVE mencegah kegagalan upaya tindak lanjut terkait UAC. Pendaftaran yang berhasil harus diikuti dengan penghapusan file perpustakaan ( -.dll atau -.ax) asli.

Jangan khawatir tentang salinan yang dibuat ke folder sistem ( C:\Windows\System32 atau ) oleh lintasan sebelumnya - salinan C:\Windows\SysWOW64tersebut akan ditimpa setiap kali Anda menjalankan file batch.

Kecuali Anda menjalankan file batch yang salah , dalam hal ini Anda mungkin ingin menghapus salinan yang dibuat ke folder sistem yang salah ( C:\Windows\System32 atau C:\Windows\SysWOW64 ) sebelum menjalankan file batch yang tepat, ... atau ...

  • Bantu Windows memilih file perpustakaan yang tepat untuk mendaftar dengan sepenuhnya memenuhi syarat lokasi direktorinya.

    1. Dari file batch kanan salin jalur folder sistem
      • Jika 64-bit: C:\Windows\System32
      • Jika 32-bit: C:\Windows\SysWOW64
    2. Tempelkan di baris berikutnya sehingga mendahului %nx1
      • Jika 64-bit: regsvr32 "C:\Windows\System32\%nx1"
      • Jika 32-bit: regsvr32 "C:\Windows\SysWOW64\%nx1"
        • Tempel jalur di dalam tanda kutip
        • Masukkan garis miring terbalik untuk memisahkan %nx1dari jalur folder sistem
      • atau ...

  • Jalankan file batch shotgun ini, yang akan (secara berurutan):

    1. Lakukan pembersihan proses pendaftaran yang dibatalkan
      • Membalik semua proses pendaftaran yang diselesaikan oleh file perpustakaan Anda;
      • Hapus semua salinan file perpustakaan Anda yang telah disimpan ke salah satu folder sistem;
      • Jeda untuk memungkinkan Anda menghentikan file batch pada saat ini (dan menjalankan file lain jika Anda mau).
    2. Coba Instalasi 64-Bit pada file perpustakaan Anda
      • Salin file perpustakaan Anda ke C:\Windows\System32;
      • Daftarkan file perpustakaan Anda sebagai proses 64-bit;
      • Jeda untuk memungkinkan Anda menghentikan file batch pada saat ini.
    3. Batalkan Instalasi 64-Bit
      • Membalik pendaftaran file perpustakaan Anda sebagai proses 64-bit;
      • Hapus file perpustakaan Anda dari C:\Windows\System32;
      • Jeda untuk memungkinkan Anda menghentikan file batch pada saat ini (dan menjalankan file lain jika Anda mau).
    4. Coba Instalasi 32-Bit pada file perpustakaan Anda
      • Salin file perpustakaan Anda ke C:\Windows\SystemWOW64
      • Daftarkan file perpustakaan Anda sebagai proses 32-bit;
      • Jeda untuk memungkinkan Anda menghentikan file batch pada saat ini.
    5. Hapus salinan asli dari file perpustakaan yang tidak terdaftar

Run as administratorberwarna abu-abu ketika saya membuat pintasan untuk file bat. Saya masuk sebagai administrator. Juga, apakah itu %nx1atau %n1?
Jon Grah

3

Ada perbedaan di Windows 7. Login sebagai Administrator tidak memberikan hak yang sama seperti saat menjalankan program sebagai Administrator.

Pergi ke Start - All Programs - Accesories. Klik kanan pada jendela Command dan pilih "Run as administrator" Sekarang daftarkan dll secara normal melalui: regsrvr32 xxx.dll



3

Anda harus cmd.exemasukc:\windows\system32\ by administrator

Perintah: Untuk unregistration * .dll files

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

Untuk pendaftaran file * .dll

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

2

Bagian dari kebingungan tentang regsvr32 adalah bahwa pada jendela 64-bit nama dan jalur tidak berubah, tetapi sekarang mendaftarkan DLL 64-bit. Regsvr32 32-bit ada di SysWOW64, nama yang tampaknya mewakili aplikasi 64-bit. Namun WOW64 dalam namanya mengacu pada Windows pada Windows 64, atau lebih tepatnya Windows 32-bit pada Windows 64-bit. Ketika Anda memikirkannya seperti ini, nama itu masuk akal meskipun dalam konteks ini membingungkan.

Saya tidak dapat menemukan sumber asli saya di blog MSDN tetapi dirujuk di artikel Wikipedia ini http://en.wikipedia.org/wiki/WoW64


1

Berikut adalah cara saya memperbaiki masalah ini pada mesin Win7 x64:

1 - pesan kesalahan:

"CoCreateInstance () gagal Silakan periksa entri registri Anda CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} dan pastikan Anda masuk sebagai administrator"

2 - prosedur perbaikan:

  • Mulai / ketik cmd / RightMouse Klik pada cmd.exe dan pilih "Jalankan sebagai Administrator"
  • mengetik: regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • restart Win 7 dan kembali berbisnis lagi!

Semoga ini membantu !

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.