Windows 7 64 bit'te bir DLL dosyasını nasıl kaydederim?


101

Aşağıdaki kodu kullanmayı denedim:

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

Ama bu benim için çalışmıyor. Windows 7'de 64 bit işlemcili bir DLL dosyasını nasıl kaydedebilirim?


Bu soru "vb.net" olarak etiketlendiğinden, neden VB.NET'te oluşturduğunuz bir DLL dosyasını kaydetmeye çalıştığınızı merak etmeliyim. Kullanılmak üzere regsvr32, bir DLL işlevleri vermeniz gerekir DllRegisterServerve DllUnregisterServer. Oluşturduğunuz DLL'lerin büyük çoğunluğuna kayıt yoktur.
Cody Grey

12
Çalışmıyor veya işe yaramıyor derken ne demek istiyorsun? Hata mesajı alıyor musunuz? Ne diyor?
Cody Grey

Yanıtlar:


68

Tür regsvr32 name.dllİstemi Komutanlığı içine (! Yükseltilmiş modda çalıştırılır) ve "Enter". Bunun name.dll, kaydetmek istediğiniz DLL'nin adıyla değiştirilmesi gerektiğini unutmayın . Örneğin, iexplore.dll dosyasını kaydetmek istiyorsanız yazın regsvr32 iexplore.dll.


5
regsvr32 dosya adı ve uzantısı ile .dll dosyasının yolu ve enter tuşuna basın
RK Sharma

202

Bunun bir 32 mi yoksa 64 bit dll mi olduğunu belirtmiyorsunuz ve hata mesajını eklemiyorsunuz, ancak bunun bu KB makalesinde açıklanan sorunla aynı olduğunu tahmin ediyorum: Regsvr32.exe'yi Çalıştırdığınızda Hata Mesajı 64-Bit Windows'ta

Bu makaleden alıntı yapın:

Bu davranış, System32 klasöründeki Regsvr32.exe dosyası 64 bitlik bir sürüm olduğu için oluşur. Bir DLL'yi kaydetmek için Regsvr32'yi çalıştırdığınızda, varsayılan olarak 64 bit sürümü kullanıyorsunuzdur.

O makaleden çözüm:

Bu sorunu gidermek için% SystemRoot% \ Syswow64 klasöründen Regsvr32.exe dosyasını çalıştırın. Örneğin, DLL'yi kaydetmek için aşağıdaki komutları yazın: cd \windows\syswow64 regsvr32 c:\filename.dll


13
Neden seçilen cevap bu değil?
Mike Devenney

5
Bu gerçekten doğru cevap olmalı. Orijinal gönderisinde sözdiziminin yanlış olduğunu anlayabiliyorum, ancak Rajkumar, doğru sözdizimini kullanırken bile bir hata mesajı aldığını söyledi. Bu, bir yerine arayan biri için doğru cevaba iki adım atar. Önce doğru olarak seçilen cevaba, ardından yorum zincirini takip ederek bu yazıya son verin.
Rob

102

DLL 32 bit ise:

\ Windows \ SysWoW64 \: C DLL kopyalama
bir In yükselmiş istemi komutu:%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

DLL 64 bit ise:

\ Windows \ System32 \: C DLL kopyalama
bir In yükselmiş istemi komutu:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

Yanlış gibi göründüğünü biliyorum, ama işleyişi bu. Görmek:

http://support.microsoft.com/kb/249873
Alıntı: "Not Windows işletim sisteminin
64 bit sürümünde, Regsv32.exe dosyasının iki sürümü vardır: 64 bit sürümü% systemroot% \ System32 \ regsvr32.exe.
32 bit sürüm% systemroot% \ SysWoW64 \ regsvr32.exe'dir.
"


26
Support.microsoft.com'a bağlantıyla "Bunun yanlış bir şekilde göründüğünü biliyorum, ancak bu şekilde çalışıyor" için +1 ... bağlantı olmadan inanmak zor.
Trevor Boyd Smith 13

6
"Yükseltilmiş cmd'de" çok önemlidir !!
shindigo

4
Bunu system32 veya syswow64 klasörüne kopyalamamız gerektiğini sanmıyorum. Dosyayı nerede olursa olsun kaydetmeniz yeterli.
Nikos

30

Bir x64 sisteminde system32 64 bit ve syswow64 32 bit içindir (başka bir cevapta belirtildiği gibi tam tersi değildir). WOW (Windows'ta Windows), 64 bitlik alt sistem altında çalışan 32 bitlik alt sistemdir).

Adlandırma terimlerinde bir karmaşa var ve sadece kafa karıştırmaya hizmet ediyor, ama bu böyle.

Tekrar ...

syswow64, 64 bit DEĞİL, 32 bittir.

system32 64 bittir, 32 bit DEĞİLDİR.

Bu dizinlerin her birinde bir regsrv32 vardır. Biri 64 bit, diğeri 32 bit. Odbcad32 ve diğerleri ile aynı anlaşma. ( 64-bit olan system32'de varsayılan odbcad32 ile görünmeyen 32-bit ODBC sürücülerini görmek istiyorsanız .)


1
Neden fark eder? regsvr32ayrıntılarla ilgilenecek, teorik olarak 32 bit mi yoksa 64 bit DLL mi kaydettiğinizi tespit edecek: stackoverflow.com/questions/18935163/…
Sk8erPeter

8

Başlangıç ​​menüsünü açın ve arama kutusuna cmd yazın Ctrl + Shift tuşlarını basılı tutun ve Enter tuşuna basın

Bu, Komut İstemi'ni Yönetici modunda çalıştırır.

Şimdi yazın: regsvr32 MyComobject.dll


6

Sonunda çözümü CMD'yi yönetici olarak çalıştırıp yazdım

cd \windows\syswow64

o zaman bunu yaz

regsvr32 c:\filename.dll

Umarım bu cevap sana yardımcı olur


Filename.dll dosyasını syswow64 klasörüne zaten kopyaladıysanız ve komut isteminde çalışma dizinini syswow64 olarak değiştirdiyseniz, "regsvr32 c: \ filename.dll" içindeki "c: \" gerekli değildir. Kısacası, "regsvr32 c: \ filename.dll", "regsvr32 filename.dll" şeklinde olmalıdır
Josh McKearin

6

DLL 32 bit ise:

  1. DLL'yi C: \ Windows \ SysWoW64 \ konumuna kopyalayın
  2. Yükseltilmiş cmd'de:% windir% \ SysWoW64 \ regsvr32.exe% windir% \ SysWoW64 \ namedll.dll

DLL 64 bit ise:

  1. DLL'yi C: \ Windows \ System32 \ konumuna kopyalayın
  2. Yükseltilmiş cmd'de:% windir% \ System32 \ regsvr32.exe% windir% \ System32 \ namedll.dll

6

Buradaki her şey yanlış yol olarak başarısız oluyordu. Sonra eski Win95 günlerinden bir numara hatırladım. .Dll'nin bulunduğu program klasörünü açın, C: / Windows / System32'yi açın, regsvr32'ye gidin ve dll'yi program klasöründen rgsrver32'ye sürükleyip bırakın. Boom, bitti.


2
bu çalışır, ancak bunu bir yönetici olarak çalıştırmanız gerekirse sorunlu olabilir.
workabyte

3

Hata mesajını bilmek oldukça değerli olacaktır. Bize mantıklı gelmese de, bilgi sağlamak içindir. Tahmin etmeye zorlanarak, DLL'nin 32 bitlik bir DirectX filtresi olduğunu söyleyebilirim. Bu durumda doğru hareket tarzı bu olmalıdır:

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

Bu, UAC'nin gerekli olan kayıt defteri erişimini durduramaması için yükseltilmiş bir komut isteminde çalıştırılmalıdır. Superuser.com'da bununla ilgili daha fazla soru sorun


3

Bu son derece basit yöntemi henüz test ettim ve mükemmel çalışıyor - ancak yerleşik Yönetici hesabını kullanıyorum, bu nedenle yükseltilmiş ayrıcalıklar için çemberlerden atlamak zorunda kalmıyorum.

Aşağıdaki toplu iş dosyası, kullanıcıyı, dosyaları sistem klasörlerinin içine / dışına taşıma ihtiyacından kurtarır. Ayrıca, .NET Framework'ün uygun sürümünü uygulamayı Windows'a bırakır Regsvr32.

TALİMATLAR:

  • Kaydetmek istediğiniz kitaplık ( -.dllveya -.ax) dosyasını içeren klasörde, yeni bir metin dosyası açın ve aşağıdaki rutinlerden BİRİNİ yapıştırın:

    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
    
  • Yeni metin dosyanızı bir toplu iş ( -.bat) dosyası olarak kaydedin ; ardından -.dllveya -.axdosyanızı toplu iş dosyasının üstüne sürükleyip bırakmanız yeterlidir .

  • UAC size toplu iş dosyasını Yönetici olarak çalıştırma fırsatı vermezse, ayrıcalıkları manuel olarak yükseltmeniz gerekebilir (talimatlar Windows 7 içindir):

    1. Toplu iş dosyasına sağ tıklayın;
    2. Seçin Create shortcut;
    3. Kısayola sağ tıklayın;
    4. Seçin Properties;
    5. Click Compatibilitysekmeyi;
    6. Etiketli kutuyu işaretleyin Run this program as administrator;
    7. -.dllVeya -.axdosyanızı, toplu iş dosyası yerine yeni kısayolun üstüne sürükleyip bırakın .

İşte bu . UAC ile ilgili herhangi bir takip girişiminin / girişimlerinin başarısızlığını önlemek COPY yerine seçtim MOVE . Başarılı kayıt işleminin ardından orijinal kitaplık ( -.dll veya ) dosyası silinmelidir -.ax.

Önceki geçişlerle sistem klasörüne ( C:\Windows\System32 veya ) yapılan kopyalar konusunda endişelenmeyinC:\Windows\SysWOW64 - toplu iş dosyasını her çalıştırdığınızda bunların üzerine yazılacaktır.

Yanlış toplu iş dosyasını çalıştırmadıysanız, bu durumda muhtemelen uygun toplu iş dosyasını çalıştırmadan önce yanlış sistem klasörüne ( C:\Windows\System32 veya C:\Windows\SysWOW64 ) yapılan kopyayı silmek isteyeceksiniz , ... veya ...

  • Windows'un, dizin konumunu tam olarak nitelendirerek kaydetmek için doğru kitaplık dosyasını seçmesine yardımcı olun.

    1. Doğru toplu iş dosyasından sistem klasörü yolunu kopyalayın
      • 64 bit ise: C:\Windows\System32
      • 32 bit ise: C:\Windows\SysWOW64
    2. Bir sonraki satıra yapıştırın, böylece önce %nx1
      • 64 bit ise: regsvr32 "C:\Windows\System32\%nx1"
      • 32 bit ise: regsvr32 "C:\Windows\SysWOW64\%nx1"
        • Yolu tırnak işaretleri arasına yapıştır
        • %nx1Sistem klasörü yolundan ayırmak için ters eğik çizgi ekleyin
      • veya ...

  • Bu av tüfeği toplu iş dosyasını çalıştırın, (sırayla):

    1. İptal edilen kayıt işlemlerinin temizliğini gerçekleştirin
      • Kitaplık dosyanız tarafından tamamlanan herhangi bir kayıt işlemini tersine çevirin;
      • Kitaplık dosyanızın sistem klasörlerinden birine kaydedilmiş tüm kopyalarını silin;
      • Bu noktada toplu iş dosyasını sonlandırmanıza izin vermek için duraklatın (ve isterseniz başka bir tane çalıştırın).
    2. Kitaplık dosyanıza 64-Bit Kurulumu deneyin
      • Kitaplık dosyanızı şuraya kopyalayın C:\Windows\System32;
      • Kitaplık dosyanızı 64 bitlik bir işlem olarak kaydedin;
      • Bu noktada toplu iş dosyasını sonlandırmanıza izin vermek için duraklatın.
    3. 64-Bit Kurulumu Geri Al
      • Kitaplık dosyanızın herhangi bir kaydını 64 bitlik bir işlem olarak tersine çevirin;
      • Kitaplık dosyanızı şuradan silin C:\Windows\System32;
      • Bu noktada toplu iş dosyasını sonlandırmanıza izin vermek için duraklatın (ve isterseniz başka bir tane çalıştırın).
    4. Kitaplık dosyanıza 32-Bit Kurulum yapmayı deneyin
      • Kitaplık dosyanızı şuraya kopyalayın: C:\Windows\SystemWOW64
      • Kitaplık dosyanızı 32 bitlik bir işlem olarak kaydedin;
      • Bu noktada toplu iş dosyasını sonlandırmanıza izin vermek için duraklatın.
    5. Kütüphane dosyasının orijinal, kayıtsız kopyasını silin

Run as administratoryarasa dosyası için bir kısayol oluşturduğumda grileşiyor. Yönetici olarak giriş yaptım. Ayrıca, bir %nx1veya %n1?
Jon Grah

3

Yönetici yok gibi Windows 7'de Günlüğü'nde bir fark vardır değil yönetici olarak bir program çalıştırırken aynı haklara verir.

Başlat - Tüm Programlar - Aksesuarlar'a gidin. Komut penceresine sağ tıklayın ve "Yönetici olarak çalıştır" ı seçin. Şimdi dll'yi şu yolla normal şekilde kaydedin: regsrvr32 xxx.dll



3

Kaçmalısın gerek cmd.exeiçindec:\windows\system32\ by administrator

Komutlar: Kayıt silme * .dll dosyaları için

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

Kayıt için * .dll dosyaları

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

2

Regsvr32 ile ilgili karışıklığın bir kısmı, 64 bitlik pencerelerde ad ve yolun değişmemiş olması, ancak şimdi 64 bit DLL'leri kaydetmesidir. 32-bit regsvr32, 64-bit uygulamaları temsil ettiği görülen bir isim olan SysWOW64'te mevcuttur. Bununla birlikte, adındaki WOW64, Windows 64'te Windows veya daha açık bir şekilde Windows 64 bit'te Windows 32 bit anlamına gelir. Bu şekilde düşündüğünüzde, bu bağlamda kafa karıştırıcı olsa da isim mantıklı geliyor.

Orijinal kaynağımı bir MSDN blogunda bulamıyorum ancak bu Wikipedia makalesinde http://en.wikipedia.org/wiki/WoW64


1

İşte bu sorunu bir Win7 x64 makinesinde nasıl düzelttim:

1 - hata mesajı:

"CoCreateInstance () başarısız Plkease, CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} kayıt girişlerinizi kontrol edin ve yönetici olarak oturum açtığınızdan emin olun"

2 - düzeltme prosedürü:

  • Başlat / cmd / RightMouse yazın cmd.exe'ye tıklayın ve "Yönetici Olarak Çalıştır" ı seçin
  • yazılan: regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • Win 7'yi yeniden başlatın ve tekrar işinize dönün!

Bu yardımcı olur umarım !

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.