Wie um zu überprüfen, COM-dll registriert ist oder nicht mit C#?
Ich brauche, um zu überprüfen, ob msdia100.dll ist registriert auf einem computer-system, dass ich laufen, um registrieren Sie die dll mit dem Befehl regsvr32.exe
. Wie kann ich das mit C#?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie suchen, durch die Registrierung für diesen. Unter der Annahme, dass Sie nicht wissen, die COM-Objekte enthalten in der DLL müssen Sie zu Beginn der Suche für den DLL-Namen zuerst in
HKEY_CLASSES_ROOT
.Verwenden Sie dann den Namen der Klasse zu finden, die CLSID in
HKEY_CLASSES_ROOT\[ClassName]\CLSID
und schließlich sollten Sie in der Lage sein, finden Sie die CLSID alsHKEY_CLASSES_ROOT\CLSID\[CLSID]
.Bitte beachten Sie, dass registry-Standorte aus dem Gedächtnis geschrieben, so dass vielleicht ein bisschen off.
Edit: Oder, wenn Sie wissen, den Namen der Klasse, konnte man nur versuchen, eine Instanz zu schaffen, und sehen, ob es funktioniert oder nicht.
Der Registrierung Ansätze sind okay und lohnt sich, aber um sicher zu sein Sie könnten auch erwägen instanziieren etwas von innerhalb des COM-Objekts, eingewickelt in ein try {} catch (COMException) {}, dann etwas vernünftiges auf den Benutzer, wenn eine COMException wurde erwischt.
Vorausgesetzt, Sie wissen, die CLSID der COM-dll verwenden, können Sie einfach überprüfen, ob es einen Schlüssel mit, die CLSID auf
HKEY_CLASSES_ROOT\CLSID\{CLSID-of-your-COM-component}
oderHKEY_CLASSES_ROOT\Wow6432Node\CLSID\{CLSID-of-your-COM-component}
(Wow6432Node => 32-bit-COM registriert und in einer 64-bit Maschine)z.B.
Überprüfen, ob der Schlüssel vorhanden ist, mithilfe von Microsoft.Win32.RegistryKey
Blick auf die rgistry unter HKEY_CLASSES_ROOT\CLSID\\InprocServer. Wenn Sie den Datensatz, dann wird die DLL registriert werden soll.
Dies ist der richtige Weg, es zu tun. Es bezieht mit PInvoke-aber nur, weil Sie nicht haben, sofern diese Funktion in der .NET direkt.