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?
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?
Yanıtlar:
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
.
regsvr32
dosya adı ve uzantısı ile .dll dosyasının yolu ve enter tuşuna basın
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
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.
"
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 .)
regsvr32
ayrıntılarla ilgilenecek, teorik olarak 32 bit mi yoksa 64 bit DLL mi kaydettiğinizi tespit edecek: stackoverflow.com/questions/18935163/…
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
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
DLL 32 bit ise:
DLL 64 bit ise:
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.
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
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 ( -.dll
veya -.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 -.dll
veya -.ax
dosyanı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):
Create shortcut
;Properties
;Compatibility
sekmeyi;Run this program as administrator
;-.dll
Veya -.ax
dosyanı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.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
Sistem klasörü yolundan ayırmak için ters eğik çizgi ekleyinBu av tüfeği toplu iş dosyasını çalıştırın, (sırayla):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
Run as administrator
yarasa dosyası için bir kısayol oluşturduğumda grileşiyor. Yönetici olarak giriş yaptım. Ayrıca, bir %nx1
veya %n1
?
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
Ve bunu yaparken, 0x80040201 hata kodunu alırsanız, DllRegisterServer'daki çözümü deneyin 0x80040201 hata koduyla başarısız oldu , ancak komut istemini Yönetici Olarak Çalıştır olarak açtığınızdan emin olun .
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
İşte bu sorunu bir Win7 x64 makinesinde nasıl düzelttim:
"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"
Bu yardımcı olur umarım !
regsvr32
, bir DLL işlevleri vermeniz gerekirDllRegisterServer
veDllUnregisterServer
. Oluşturduğunuz DLL'lerin büyük çoğunluğuna kayıt yoktur.