Shell-Extension & 64 Bit
-
_Luckie schrieb:
Du brauchst eine 64-Bit DLL.
Habe ich auch schon dran gedacht. Es gibt nur ein Problem: Ich habe zu Testzwecken eine 64Bit-DLL erstellt.
Dann habe ich unter Windows 7 64Bit die DLL per Cmd registriert:C:\Windows\system32>regsvr32 C:\ShellHandler64.dllEs kommt dann die Fehlermeldung, dass DllRegisterServer() mit dem Fehlercode SELFREG_E_CLASS beendet wurde.
Der gleiche Code, nur als 32Bit-DLL compiliert, wird mitC:\Windows\SysWOW64>regsvr32 C:\ShellHandler32.dllohne Probleme registriert.
-
C:\Windows\system32>regsvr32 C:\ShellHandler64.dllDu versuchst eine 64-Bit DLL mit einem 32-Bit Programm zu registrieren? Frag dich mal, ob das klappen kann.
C:\Windows\SysWOW64>regsvr32 C:\ShellHandler32.dllDazu muss man wohl nichts mehr sagen.

-
Das sieht schon alles richtig aus

Es gibt kein regsvr64

Bei der Registrierung ging halt wohl was schief... da kommst Du vermutlich um ein Debuggen nicht drum herum...
-
_Luckie schrieb:
C:\Windows\system32>regsvr32 C:\ShellHandler64.dllDu versuchst eine 64-Bit DLL mit einem 32-Bit Programm zu registrieren? Frag dich mal, ob das klappen kann.
C:\Windows\SysWOW64>regsvr32 C:\ShellHandler32.dllDazu muss man wohl nichts mehr sagen.

http://support.microsoft.com/kb/249873/de
Die 64-Bit-Version ist "%systemroot%\System32\regsvr32.exe".
Die 32-Bit-Version ist "%systemroot%\SysWoW64\regsvr32.exe".Meine Kommandozeile ist vollkommen richtig, schonmal mit einem 64Bit System gearbeitet?
SysWOW64 steht für "Windows on Windows 64", d.h. alle 32-Bit System-DLL's und System-Programme liegen dort. Die nativen 64Bit Programme/DLL's liegen in System32.@Jochen:
Danke, werde mal meine 64Bit DLL noch mal unter die Lupe nehmen ^^
Hast du eine Idee warum dann die 32Bit DLL unter x64 zwar erfolgreich registriert werden kann, aber kein Menüeintrag angezeigt wird?
-
Der Menü-Eintrag wird nur angezeigt, wenn Du den 32-Bit Explorer aus "syswow64" startest!!!
-
Jochen Kalmbach schrieb:
Es gibt kein regsvr64

Womit wir wieder bei der Inkonsistenz von Microsoft wären. Ich hätte für 64-Bit jetzt regsvr64 erwartet oder nur regsvr.
Dann nehme ich alles wieder zurück.
-
Jochen Kalmbach schrieb:
Der Menü-Eintrag wird nur angezeigt, wenn Du den 32-Bit Explorer aus "syswow64" startest!!!
Selbst wenn ich den Explorer aus SysWOW64 starte und meine 32Bit-DLL registriere erscheint kein Menüeintrag.
(Laut TaskManager ist der Explorer dann trotzdem ein 64Bit-Programm)
-
Ach so... moment, ich teste mal...
Ja, es sieht tatsächlich so aus, als ob man keinen 32-Bit explorer unter x64 zum laufen bekommt...
Das hat ja was gutes: Du braucht keinen 32-Bit DLL registrieren
-
Jochen Kalmbach schrieb:
Das hat ja was gutes: Du braucht keinen 32-Bit DLL registrieren

Hab auch jetzt meine 64Bit-DLL zum laufen/registriert bekommen ^^ Aber der Menüeintrag fehlt immer noch...
Kann sein das ich total auf dem Schlauch stehe: Ich benutze RegCreateKeyEx() und RegSetValueEx(), muss ich bei 64Bit einen extra Flag angeben bzw. was besonderes beachten?
-
Wenn Du eine 64-Bit DLL hast musst Du nichts besonderes beachten...
Hast Du nachgeschaut, dass auch die Registry Einträge gesetzt sind?
Hast Du mal unter "Senden an..." geschaut... unter Win7 hat sich da mit den Kontext-Menü Einträgen auch irgend etwas geändert...