Frage

Ich habe ein ActiveX-Steuerelement in C # geschrieben und habe es mit regasm Befehl zu arbeiten, und es funktioniert gut, solange die Sicherheitsstufe auf niedrig eingestellt ist .. dann als nächster Schritt habe ich einen .cab-Installer (ICD - Internet-Komponente Downloader), und hat meine CAB-Datei signiert und ActiveX-DLL mit einem Prüfzertifikat Datei. wenn ich die HTML-Seite von meinem Browser getroffen funktionieren die Anlagenteile mit Standardsicherheitseinstellungen des IE in Ordnung, aber am Ende scheint es, dass nichts installiert ist und ein rotes Kreuz auf anstelle von ActiveX gezeigt. Außerdem habe ich den Download-Ordner Programme unter Windows-Verzeichnis untersucht, in Statusspalte es Wort „unbekannt“ angezeigt wird. während es für alle anderen activeX „installiert“. was kann das Problem sein. Außerdem, wenn ich verwende den regasm Befehl die Montage es funktioniert gut, zu registrieren, und ich habe das ActiveX unterzeichnet, aber noch habe ich die Sicherheit bar zu niedrig in meinem Browser-Einstellung zu bewegen? warum ist es so? dann, was ist der Zweck der Unterzeichnung? Ich habe RegisterServer=yes in meiner INF-Datei verwendet,

Bitte lassen Sie mich wissen, wenn jemand bereits über dieses Problem gegangen ist?

War es hilfreich?

Lösung

Um in IE zu laufen, müssen Sie auch IObjectSafety implementieren, so dass IE weiß, dass es sicher ist, von einem nicht vertrauenswürdigen Anrufer und / oder mit nicht vertrauenswürdigen Daten aufgerufen werden. (Wenn es tatsächlich sicher ist, das ist)

Ich persönlich habe dies nur getan in C ++ und ATL, nicht C #, aber hier ist ein Blog-Post, die wie es aussieht, sollten Sie dies in C # erreichen helfen.

http://blog.devstone.com/aaron/2007 /06/12/ImplementingIObjectSafetyInNETMarkingClassesSafeForScripting.aspx

Der Grund dafür ist, dass Skripte von ruchlosen Personen Ihr Objekt verwenden, um die normalen Sicherheits von IE angeboten zu umgehen, so dass Ihr ActiveX-Objekt gegen nicht vertrauenswürdige Seiten verteidigen sich.

Wenn Sie ein Taxi unterzeichnen, erzählen Sie den Benutzer, dass die Kabine sie herunterzuladen sind, ist der, den sie denken, sie sind das Herunterladen - das heißt, dass einige böswillige Person Ihre Kabine mit einem gefährlichen man nicht ersetzt hat. Wenn sie Ihnen als Verleger vertrauen, dann können sie darauf vertrauen, dass die ActiveXObject nichts tun, werden böse auf seinem eigenen, oder in Kombination mit anderem Code, den sie vertrauen.

Wenn Sie implementieren IObjectSafety, zurückzukehren INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA Sie IE sagen, dass das Objekt nicht böswillig von jemand anderem verwendet werden, und ist daher sicher in Verbindung mit Code auszuführen, dass der Benutzer vertrauen nicht explizit.

Andere Tipps

Für mich ist die Lösung oben funktioniert nicht. Ich musste auch die TLB

registrieren

mit: regasm MYDLL.DLL / TLB

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