Wie beheben Sie die Registrierung / Verwendung einer .NET-COM-anrufbaren Wrapper-DLL?

StackOverflow https://stackoverflow.com//questions/9623307

  •  09-12-2019
  •  | 
  •  

Frage

Ich habe eine c # .NET com aufrufbare Wrapper-Dll geschrieben. Ich habe es mit einem StrongName unterschrieben und registriert die Codebase und Typeelib mit dem 64-Bit-Regasmus.exe. Die Registrierung und alle Methoden der Steuerung sind mit dem 64-Bit-Oleviewer sichtbar. Wenn ich jedoch versuche, das Steuerelement von 64 Bit \ Windows \ system32 \ cscript.exe zu verwenden: generasacodicetagpre.

Dies ergibt den Fehler:

Microsoft VBScript Laufzeitfehler: ActiveX-Komponente kann kein Objekt erstellen: 'mycompany.loggercontrol'

mit procmon von sysutils, um dies nach unten zu verfolgen, finde ich:

1: 41: 44.8295486 PM cscript.exe 24028 Regopenkey HKCR \ mycompany.loggercontrol
Name nicht gefunden den gewünschten Zugriff: Lesen Sie

Dieser Schlüssel existiert jedoch in regedit. Der Anrufvorgang läuft von einer erhöhten Eingabeaufforderung. Wenn es sich um ein Sicherheitsproblem handelt, sollte der Fehler nicht "Zugriff verweigert" anstelle von 'Name nicht gefunden' sein?

Was sind andere Tools, um diesen Typ von COM Control-Registrierungsfehler zu verfolgen?

War es hilfreich?

Lösung

Hier sind ein paar Fehlerbehebungsideen:

    .
  1. Identifizieren Sie die genaue Fehlernummer, die beim Erstellen des Objekts zurückgegeben wird:

    auf Fehler wieder aufnehmen Weiter
    Set Logger= CreateObject ("mycompany.loggercontrol")
    Wenn irren dann Wscript.echo "fehler #" & irr.number Wscript.echo ir.description. Wscript.quit 1. Enden, wenn

  2. schauen Sie diesen Fehlercode auf. Ist es beispielsweise "Zugriff verweigert" oder ein anderer Fehler?

  3. Erstellen Sie eine c #-ausführbare Datei, um Ihr Objekt anzurufen und zu sehen, ob er erfolgreich erstellen kann.

  4. Stellen Sie sicher, dass Ihre DLL keine anderen Abhängigkeiten hat, die daran hindern, dass es in dem Verzeichnis geladen wird, in dem Ihr Skript ausgeführt wird. Sie können abhängig von der Verzeichnis von Ihrem Verzeichnis verwenden Wenn die DLL aufgrund einer Abhängigkeit nicht laden kann, erhalten Sie ein Fehlerdialogfeld, an dem Sie mitzuteilen, dass es keine andere DLL finden oder eine der Abhängigkeiten laden kann. Wenn es den DLL laden kann OK, wird es angenommen, dass es erfolgreich registriert ist.

    c: \ pathtovbs> regsvr32 c: \ pathtoyourdll \ yourdll.dll

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top