Heim / Internet / Objekt kann nicht durch ActiveX-Container erstellt werden. Erstellen Sie Container für ActiveX-Steuerelemente. Grundlegende Containerfunktionen

Objekt kann nicht durch ActiveX-Container erstellt werden. Erstellen Sie Container für ActiveX-Steuerelemente. Grundlegende Containerfunktionen

Systeme und waren alle verwandten verfügbar. Dieser Fehler hat folgende Ursachen und Lösungen:

    Die Klasse ist nicht angemeldet. Beispielsweise wird eine Klasse in der Systemregistrierung nicht erwähnt, oder eine Klasse wird erwähnt, verweist aber auf eine Datei des falschen Typs oder auf eine Datei, die nicht gefunden werden kann. Starten Sie nach Möglichkeit die Objektanwendung. Wenn die Registrierungsinformationen falsch oder veraltet sind, überprüft die Anwendung die Registrierung und korrigiert die Informationen. Wenn das Ausführen der Anwendung das Problem nicht behebt, führen Sie das Installationsprogramm der Anwendung erneut aus;

    Kann nicht verwendet werden DLL Das vom Objekt benötigte, da es nicht gefunden oder als beschädigt befunden wurde. Stellen Sie sicher, dass alle zugehörigen DLLs verfügbar sind. Beispielsweise erfordert ein Data Access Object (DAO) Unterstützung für DLLs, die je nach Plattform variieren. Wenn dies die Ursache des Fehlers ist, müssen Sie das Installationsprogramm für dieses Element erneut ausführen.

    Das Objekt ist auf dem Computer verfügbar, aber lizenziert, und es kann nicht überprüft werden, ob die zum Instanziieren des Objekts erforderliche Lizenz verfügbar ist.

    Einige Objekte können erst instanziiert werden, nachdem die Komponente gefunden wurde Lizenzschlüssel A, das bestätigt, dass dieses Objekt für die Instanziierung registriert ist dieser Computer. Bei einem Verweis auf ein Objekt wird automatisch ein richtig gesetzter bzw. korrekter Schlüssel bereitgestellt.

    Wenn der Versuch, eine Instanz zu erstellen, das Ergebnis eines Funktionsaufrufs ist CreateObject oder GetObject, muss das Objekt den Schlüssel finden. In diesem Fall kann es die Systemregistrierung durchsuchen oder suchen spezielle Datei, die es während der Installation erstellt (z. B. mit der Erweiterung .LIC). Wenn der Schlüssel nicht gefunden werden kann, kann das Objekt nicht instanziiert werden. Wenn der Endbenutzer die Objektanwendung falsch konfiguriert hat, dauerhaft gelöscht gewünschte Datei oder die Systemregistrierung geändert haben, kann das Objekt seinen Schlüssel nicht finden. Wenn der Schlüssel nicht gefunden werden kann, kann das Objekt nicht instanziiert werden. In diesem Fall funktioniert die Instanziierung möglicherweise auf dem System des Entwicklers, aber nicht auf dem System des Benutzers. Der Benutzer muss den lizenzierten Artikel neu installieren;

    Sie versuchen, die Get-Object-Funktion zu verwenden GetObject um einen Verweis auf eine mit Visual Basic erstellte Klasse zu erhalten. GetObject kann nicht verwendet werden, um einen Verweis auf eine mit Visual Basic erstellte Klasse abzurufen;

    Der Zugriff auf das Objekt wird explizit verweigert. Sie versuchen beispielsweise, auf ein Datenobjekt zuzugreifen, das derzeit verwendet wird und gesperrt ist, um einen Deadlock zu verhindern. In diesem Fall können Sie möglicherweise zu einem anderen Zeitpunkt auf das Objekt zugreifen.

Zum bekommen zusätzliche Information Wählen Sie das Element aus, zu dem Sie eine Frage haben, und drücken Sie F1 (Windows) oder HELP (Macintosh).

Alexander Kostarew
Programmierer der Technologieabteilung des R-Style Software Lab.

Das Erstellen von ActiveX-Steuerelementen wird in der Fachliteratur ausführlich behandelt. Techniken zum Schreiben von ActiveX-Containern werden jedoch viel seltener diskutiert, meistens nur als Teil ihrer Interaktion mit ActiveX-Objekten. Noch weniger Veröffentlichungen widmen sich den Verfahren zur Entwicklung von Containern, die eine eigene Programmierschnittstelle (API) unterstützen, die es ermöglicht, mit ihnen und den darin enthaltenen Objekten aus anderen Anwendungen oder Skriptsprachen zu arbeiten. Beispiele für solche Container sind Softwareprodukte wie Microsoft Visual Basic, Borland Delphi usw.

Dennoch lassen sich eine Reihe von Aufgabenstellungen nicht auf Basis vorhandener Container lösen – dafür bedarf es spezialisierter Steuerungscontainer. Eine dieser Herausforderungen besteht darin, eine erweiterbare Anwendung zu erstellen, mit der Sie allgemeine Vorgänge automatisieren können, die während der Entwicklung nicht vorhersehbar waren. Die Automatisierung erfordert, dass die Anwendung ihre Objekte extern verfügbar macht und in das Erweiterungsentwicklungstool integriert wird. Das Erstellen einer Benutzeroberfläche basiert in den meisten Fällen auf dem Einfügen verschiedener Steuerelemente in ein Formular – einen Container mit ActiveX-Objekten. So die Schöpfung Werkzeug erfordert die Erstellung eines ActiveX-Containers.

Wir werden einige Probleme betrachten, die bei der Einführung einer Komponentenarchitektur in einen Werkzeugkomplex auftreten, sowie Methoden zu deren Lösung. Dies kann sowohl für Entwickler von Steuerungscontainern als auch für Entwickler von ActiveX-Objekten selbst von Interesse sein, da dieser Artikel den Zweck und die Verwendung von verschiedene Methoden Standardschnittstellen für containerseitige Steuerungen.

Die vorgeschlagenen Lösungen basieren auf den Erfahrungen bei der Entwicklung des RS-Forms-Toolkomplexes - einem neuen Softwareprodukt R-Style-Softwarelabor. RS-Forms enthält ein Entwicklungstool GUI Benutzer an Windows-Plattform, eine Ausführungsumgebung für Programme, die mit den Sprachen RSL*, C und C++ erstellt wurden, sowie ein Debugging-System für RSL-Programme.

*Object RSL - Programmiersprache hohes Level, erstellt von R-Style Software Lab. Einzelheiten finden Sie unter http://www.softlab.ru/products/rsl/. - Notiz. ed.

Im Rahmen des Projekts wurde die erste Version des Formulardesigners implementiert (Abb. 1), mit dem Sie Formulare erstellen, sowohl Standardsteuerelemente als auch beliebige ActiveX-Objekte darin einbetten und speichern können fertige Formulare auf einem dauerhaften Speichermedium gespeichert und von diesem geladen werden. Mit Hilfe des Designers können Sie die Eigenschaften, Methoden und Ereignisse jedes in das Formular eingebetteten Steuerelements anzeigen und die Eigenschaftswerte ändern.

Der Designer basiert auf einem ActiveX-Control-Container (Formular), der die oben beschriebene Funktionalität bereitstellt. Darüber hinaus unterstützt das Formular Verschiedene Optionen Einstellungen für seine Darstellung, einschließlich der prozentualen Bindung eingebetteter Elemente an die Ränder, Steuerung der Reihenfolge ihrer Umgehung durch die Tastatur, ihrer Sichtbarkeit, Schriftart und Schriftgröße, Hintergrundfarbe, Text usw.

Zusätzlich zur Entwicklung einer grafischen Benutzeroberfläche verfügt der Designer über einen Mechanismus zum automatischen Generieren von Code in C++ und RSL. Es ist wichtig zu beachten, dass alle Operationen, die im Designer auf dem Formular ausgeführt werden, auch im Laufzeitmodus aus dem Programmcode verfügbar sind.

Reis. 1. Formulardesigner.

Erstellt im Designer grafische Formen kann in jeder C/C++-Anwendung sowie in jeder Skriptsprache wie Visual Basic oder RSL verwendet werden. Bei der Verwendung von Formularen in C++-Anwendungen, die mit der MFC-Bibliothek entwickelt wurden, kann der Designer als Dialogressourcen-Editor verwendet werden.

Lassen Sie uns nun das Konzept zum Erstellen eines Containers und die Prinzipien der Arbeit mit ActiveX-Steuerelementen besprechen.

Grundlegende Containerfunktionen

Jeder Container mit Steuerelementen sollte über Funktionen verfügen, mit denen Sie ActiveX-Objekte erstellen, deren ordnungsgemäßen Betrieb sicherstellen und sie entfernen können Arbeitsspeicher, sowie Artikel im Objektspeicher auf einem dauerhaften Speichermedium abzulegen und von diesem zu laden*. Der Behälter enthält eine Reihe von Komponenten (Abb. 2), die standardmäßig (gem Microsoft-Technologie ActiveX)-Funktionalität, die erforderlich ist, damit die Steuerelemente ordnungsgemäß funktionieren.

* Allgemeine Probleme beim Erstellen von Containern und Servern für COM-Objekte werden im Buch von D. Chappel "ActiveX and OLE Technologies" - M .: "Russian Edition", 1997 behandelt.

Der Container verwaltet eine Sammlung (z. B. eine Liste) von Verbindungsobjekten mit ActiveX-Steuerelementen, ein Verbindungsobjekt pro Steuerelement. Außerdem muss ein programmierbarer Container einen Standardmechanismus zum Manipulieren der Elemente dieser Sammlung bereitstellen.

Das Control-Site-Objekt ist für das korrekte Zusammenspiel des entsprechenden Elements mit dem Container verantwortlich. Jedes Verbindungsobjekt enthält ein Unterobjekt, das das Steuerelement um einen containerspezifischen Satz von Eigenschaften, Methoden und Ereignissen erweitert. Ein solches Unterobjekt wird als erweitertes Steuerelement bezeichnet. Ein Beispiel für erweiterte Eigenschaften ist ein Name (Name), eine Position in einem Container (Width, Left) und so weiter. Die angegebenen Sätze sind Eigenschaften des Containers, nicht eines einzelnen Steuerelements, obwohl es für den Benutzer des Systems so aussieht. Es gibt mehrere Möglichkeiten, eine erweiterte Steuerung zu implementieren. Beispielsweise kann es sich um ein Unterobjekt des Kommunikationsobjekts handeln (siehe Abbildung 2) oder um ein echtes COM-Objekt, das die ursprüngliche Steuerung aggregiert. Jede der Optionen hat ihre eigenen Vor- und Nachteile. In diesem Artikel betrachten wir nur die erste Methode.

Jedes erweiterte Steuerelement enthält als Unterobjekt ein Ereignissenkenobjekt des zugehörigen Steuerelements (Abbildung 2). Zu seinen Aufgaben gehören die primäre Identifizierung von empfangenen Ereignissen (ob eine benutzerdefinierte Ereignisverarbeitung erforderlich ist oder nicht) und, falls erforderlich, deren Weiterleitung an sein Besitzerobjekt (erweiterte Kontrolle), das das Ereignis-Routing entlang der Container-Objekthierarchie bereitstellt.

Steuerungserstellungsskript

Das Einfügen eines Steuerelements in einen Container besteht aus drei Phasen: Erstellen eines ActiveX-Objekts, Initialisieren und Aktivieren.

Steuerelemente werden im Adressraum des Containers mithilfe von Standard-COM-Funktionen wie CoCreateInstance erstellt. Die entsprechende global eindeutige CLSID wird als ID des Steuerelements an die Funktion übergeben. Zu beachten ist, dass der Container verschiedene Möglichkeiten zur Identifizierung von COM-Objekten im System unterstützen muss – wie etwa die Programmkennung ProgID, eine eindeutige Klassenkennung in Form eines Strings etc.

Der Hauptzweck der Initialisierungsphase besteht darin, einen Zeiger auf die Schnittstelle IOleClientSite des Verbindungsobjekts über die Funktion IOleObject::SetClientSite an das Steuerelement zu übergeben und die Funktion IPersistStreamInit::InitNew oder IPersistStreamInit::Load aufzurufen (je nachdem, ob das Objekt aus dem Speicher geladen oder nicht). Das Übergeben eines Objekts an einen Zeiger auf die IOleClientSite-Schnittstelle kann vor dem Laden/der Initialisierung oder danach erfolgen; der Zeitpunkt der Übertragung wird durch das Vorhandensein des Attributs OLEMISC_SETCLIENTSITEFIRST (IOleObject::GetMiscStatus) bestimmt. Dies ist von Bedeutung, da das Passieren des Zeigers bestimmt, zu welchem ​​Zeitpunkt das Steuerelement die Werte der Umgebungseigenschaften aus dem Container erhält. Wird diese Funktion ignoriert, kann die weitere Funktionsweise des ActiveX-Objekts fehlerhaft sein.

Dann müssen Sie im Rahmen der betrachteten Phase die Initialisierung der Eigenschaften des erweiterten Steuerelements durchführen, das das erstellte ActiveX-Objekt ergänzt. Beispielsweise müssen Sie den Namen des Objekts korrekt festlegen (die Name-Eigenschaft initialisieren, die die Identifizierung von Steuerelementen innerhalb des Containers bereitstellt). Jedes in einen programmierbaren Container eingebettete Steuerelement muss diese Eigenschaft unterstützen, aber es ist immer noch eine Eigenschaft des Containers. Häufig erhalten Objekte standardmäßig den Kurznamen der Klasse, zu der sie gehören (dieser Name wird von der Methode IOleObject::GetUserType für den Parameter USERCLASSTYPE_SHORT zurückgegeben), wobei ein numerischer Index angehängt wird, um sicherzustellen, dass die Namen der Containersteuerelemente eindeutig sind . Wenn erhalten angegebenen Namen fehlschlägt oder die Logik des Containers nicht erfüllt, kann ein vordefinierter Name mit dem entsprechenden Index angegeben werden.

Die Aktivierung eines Steuerelements impliziert eine bestimmte Abfolge von Aktionen. Der erste Schritt besteht darin, einen ActiveX-Objekt-Backlink zum Link-Objekt im Container (Kontrollseite) einzurichten. Dazu wird die Methode IOleObject::Advise aufgerufen, die als Parameter einen Zeiger auf die Standardschnittstelle des Verbindungsobjekts IAdviseSink übergibt. Als nächstes müssen Sie die Schnittstelle der IViewObject-Familie korrekt anfordern (gemäß der Spezifikation kann ein ActiveX-Objekt die Schnittstellen IViewObject, IViewObject2, IViewObjectEx unterstützen, die sich in der Vererbungshierarchie befinden) und eine Rückmeldung dafür herstellen, indem Sie das IViewObject aufrufen:: SetAdvise-Methode, die einen Zeiger an IAdviseSink übergibt. Außerdem müssen Sie dem Steuerelement den Namen seines Containers mitteilen (dies wird durch den Aufruf der Methode IOleObject::SetHostName implementiert), alle Schnittstellen anfordern und speichern, die für die korrekte Arbeit mit dem ActiveX-Objekt erforderlich sind (mindestens IOleInPlaceObject und IOleControl). Das letzte, was Sie tun müssen, um das Steuerelement visuell wiederzugeben, besteht darin, die Funktion IOleObject::DoVerb* mit dem Parameter OLEIVERB_INPLACEACTIVATE aufzurufen.

*In der ATL-Implementierung ist diese Funktion unter anderem dafür zuständig, ein Fenster für normale (Fenster-)Steuerelemente zu erstellen.

Löschskript steuern

Um ein in einen Container eingebettetes Steuerelement aus dem Speicher zu entfernen, müssen Sie das Verknüpfungsobjekt mit dem entsprechenden Steuerelement aus der Sammlung ausschließen und dann zwei Operationen nacheinander ausführen: break Rückmeldung und Freigeben gespeicherter Zeiger auf Schnittstellen des ActiveX-Objekts.

Um Backlinks aufzuheben, müssen Sie zuerst das zu entfernende Element über die Notwendigkeit informieren (durch Aufrufen der IUnknown::Release-Methode), die Zeiger, die es auf die IAdviseSink-Schnittstelle des Link-Objekts hält, freizugeben. Dazu werden die Methoden IViewObject::SetAdvise aufgerufen (Übergabe von NULL als Argument) und IOleObject::Unadvise, das mit der während der Aktivierungsphase gespeicherten Beziehungskennung versehen werden muss. Als nächstes müssen Sie die Prozedur zum Deinitialisieren des ActiveX-Objekts aktivieren (durch Aufrufen der Funktion IOleObject::Close). Der nächste Schritt besteht darin, das Steuerelement anzuweisen, den IOleClientSite-Schnittstellenzeiger freizugeben, indem IOleObject::SetClientSite mit einem NULL-Parameter aufgerufen wird.

Die Phase des Freigebens gespeicherter Zeiger an Steuerschnittstellen besteht darin, die Methode Release nacheinander aufzurufen. Sobald der letzte Zeiger freigegeben ist, wird das Objekt (gemäß COM-Technologie) aus dem RAM entfernt.

Skript speichern und laden

Beim Speichern eines Containerobjekts im Speicher, unabhängig vom Typ des letzteren, geht es um das Speichern der Eigenschaften des Containers (z. B. Umgebungseigenschaften) und der Sammlung eingebetteter Steuerelemente, d. h. der IDs und Eigenschaften (einschließlich erweiterter) jedes Objekts das gehört zur Sammlung. Der Bezeichner des Steuerelements kann der global eindeutige Bezeichner der CLSID-Klasse sein. Dadurch kann die Initialisierungsstufe das erforderliche ActiveX-Objekt erstellen und es mit den Daten laden, die im Speicher nach der angegebenen Kennung enthalten sind. Um beispielsweise die Eigenschaften eines Steuerelements in einem Stream zu speichern, wird die Save-Methode der Standard-ActiveX-Objektschnittstelle IPersistStreamInit aufgerufen. Zum Laden wird die Load-Methode derselben Schnittstelle aufgerufen.

Dieser Speichervorgang stellt sicher, dass das Containerobjekt später aus dem Speicher wiederhergestellt wird. Das beschriebene Verfahren funktioniert gut, vorausgesetzt, dass zwischen dem Zeitpunkt des Speicherns und dem Zeitpunkt des Ladens keine Versionsänderungen oder das Entfernen irgendwelcher Steuerungen aus dem System stattgefunden haben. Solche Situationen treten häufig auf, wenn ein Datenspeicher von einem Computer auf einen anderen migriert wird, auf dem die gespeicherten ActiveX-Steuerelemente nicht installiert oder registriert wurden. In diesem Fall führt das Laden des Containerobjekts aus dem Speicher entweder zu einem fatalen Abbruch des Programms oder zu einem Fehler beim Laden des gesamten Containers als Ganzes. Um Fehlern vorzubeugen, ist es erforderlich, die Grenze zwischen den Daten verschiedener Steuerungen klar festzulegen, indem nach der Objektkennung die Größe der darin gespeicherten Informationen in den Speicher geschrieben wird. Dadurch kann sich die Ladephase genau am Anfang der Daten jedes ActiveX-Objekts positionieren und Steuerelemente überspringen, die nicht im System registriert sind, aber das Containerobjekt als Ganzes laden.

ActiveX-Objektsammlungsschnittstellen

Laut Standard muss der Control-Container eine Interaktion zwischen darin eingebetteten ActiveX-Objekten ermöglichen. Dazu müssen Sie die IOleContainer-Schnittstelle unterstützen, mit der Sie alle darin eingefügten Steuerelemente aufzählen können. Wenn ein erweitertes Steuerelement vorhanden ist, muss die Enumeration seine IUnknown-Schnittstellen durchlaufen, nicht die Schnittstellen des zugrunde liegenden Objekts.

Verwenden Sie die standardmäßige Objektsammlungsschnittstelle, um Automatisierungsclients Zugriff auf eine Sammlung zu gewähren. Die Standardsammlung umfasst die Methoden Add, Remove, Clear, Item und die Eigenschaften _NewEnum und Count, die eine umfassende Iteration der Elemente bereitstellen. Beispielsweise verwendet das Visual Basic for each-Konstrukt die _NewEnum-Eigenschaft, um Elemente aufzuzählen, während das for next-Konstrukt die Count-Eigenschaft und die Item-Methode verwendet. In Object RSL wird die _NewEnum-Eigenschaft verwendet, wenn die CreateEnum-Methode des Standard-ActiveX-Objekts aufgerufen wird. Dies wird beispielsweise durch ein RSL-Programm veranschaulicht, das die Namen von Dateien ausgibt, die in der Anwendung mit der angegebenen Methode geöffnet wurden. Microsoft Excel(der Text ist unten angegeben).

rslx importieren; ob = ActiveX("Excel.Application", null, true); en = ob.Workbooks.CreateEnum; while (en.next) println(en.item.Name) end;

Die obigen Szenarien ermöglichen es Ihnen, Funktionen zu entwickeln, um einem Container ein Steuerelement hinzuzufügen und es daraus zu entfernen. In den meisten Fällen erstellt die Add-Funktion ein Zuordnungsobjekt mit dem Steuerelement (das alle Zeiger auf die Schnittstellen des ActiveX-Objekts speichert, die es zum Arbeiten benötigt) und ruft eine ähnliche Funktion dafür auf. Letztere wiederum setzt das oben beschriebene Implementierungsszenario (ggf. ohne Aktivierungsphase) um. Wenn die Erstellung des ActiveX-Objekts im RAM erfolgreich war, fügt die Containerfunktion das entsprechende Link-Objekt der Sammlung hinzu. Aufgrund ihrer Ähnlichkeit werden die Verfahren zum Einbetten und Laden eines Steuerelements aus dem Speicher häufig kombiniert.

* * *

Wir haben hier die Hauptprobleme im Zusammenhang mit dem Erstellen von Kontrollcontainern behandelt: Injektion, visuelle Anzeige, Speichern und Laden eines ActiveX-Objekts sowie dessen korrektes Entfernen aus dem RAM. Bei der Erstellung einer grafischen Arbeitsumgebung mussten wir jedoch mehrere Container implementieren, die sich in den bereitgestellten Automatisierungsschnittstellen, Untergruppen von ActiveX-Objekten, die injiziert werden können, Gruppen von Eigenschaften, Methoden und Ereignissen erweiterter Steuerelemente, voneinander unterscheiden würden. usw. Dafür wurde ein Modell vorgeschlagen, mit dem Sie verschiedene Containerelemente erstellen können und das sich gut in die ATL-Bibliothek integrieren lässt. Unabhängigkeit von spezifische Schnittstellen wird durch die Verwendung von Template-Klassen erreicht, deren Parameter diese Schnittstellen sind.

*Zum Beispiel ist das Tab-Steuerelement ein Container für Eigenschaftsseiten, die allgemeine Container sind.

Mit diesem Modell können Sie schnell grundlegende Varianten verschiedener ActiveX-Objekte erstellen, denen eine "Container-Logik" innewohnt. Darüber hinaus ermöglicht Ihnen die implementierte Infrastruktur, Container zu erstellen, die keine Steuerelemente sind. Ein solcher Behälter kann z Windows-Fenster zu einem beliebigen Teil der zu entwickelnden Anwendung und implementieren dann durch Senden geeigneter Nachrichten verschiedene Kontrollen darin.

Das Ergebnis ist eine ziemlich flexible Architektur zum Erstellen von Containern, mit der Sie einen Assistenten (Wizard) erstellen können, der erweitert wird Funktionalität Microsoft Visual Studio-Umgebung zum Generierungsmechanismus für das Container-Skelett.


Das manuelle Bearbeiten der Windows-Registrierung zum Entfernen ungültiger Schlüssel Fehler 800A01AD wird nicht empfohlen, es sei denn, Sie sind ein PC-Serviceprofi. Fehler beim Bearbeiten der Registrierung können Ihren PC unbrauchbar machen und irreparable Schäden an Ihrem PC verursachen Betriebssystem. Tatsächlich kann sogar ein einziges Komma an der falschen Stelle verhindern, dass Ihr Computer hochfährt!

Aufgrund dieses Risikos empfehlen wir dringend die Verwendung eines vertrauenswürdigen Registry-Cleaners wie z. B. WinThruster [Download] (entwickelt von einem Microsoft Gold Certified Partner), um Fehler 800A01AD zu scannen und zu reparieren. Indem Sie den [Download] Registry Cleaner verwenden, können Sie das Auffinden defekter Registrierungseinträge, fehlender Dateiverweise (wie der, der Ihren %%error_name%%)-Fehler verursacht, und defekter Links innerhalb der Registrierung automatisieren. Vor jedem Scan wird automatisch eine erstellt Sicherheitskopie, wodurch Sie alle Änderungen mit einem einzigen Klick rückgängig machen und Sie vor möglichen Schäden an Ihrem Computer schützen können. Das Beste daran ist, dass das Beheben von [Download]-Registrierungsfehlern die Systemgeschwindigkeit und -leistung drastisch verbessern kann.


Warnung: Sofern Sie kein fortgeschrittener PC-Benutzer sind, empfehlen wir NICHT, die Windows-Registrierung manuell zu bearbeiten. Eine falsche Verwendung des Registrierungseditors kann zu schwerwiegenden Problemen führen und erfordern Neuinstallation von Windows. Wir garantieren nicht, dass Probleme, die durch Missbrauch des Registrierungseditors entstehen, gelöst werden können. Sie verwenden den Registrierungseditor auf eigenes Risiko.

Vor der manuellen Wiederherstellung Windows-Registrierung, müssen Sie eine Sicherung erstellen, indem Sie den Teil der Registrierung exportieren, der mit Fehler 800A01AD verknüpft ist (z. B. ActiveX):

  1. Klicken Sie auf die Schaltfläche Beginnen.
  2. Eintreten " Befehl" in Suchleiste... NOCH NICHT DRÜCKEN EINTRETEN!
  3. Schlüssel halten STRG-Umschalt drücken Sie auf der Tastatur EINTRETEN.
  4. Ein Zugriffsdialog wird angezeigt.
  5. Klicken Ja.
  6. Das schwarze Kästchen öffnet sich mit einem blinkenden Cursor.
  7. Eintreten " regedit" und drücke EINTRETEN.
  8. Wählen Sie im Registrierungseditor den mit Fehler 800A01AD zusammenhängenden Schlüssel (z. B. ActiveX) aus, den Sie sichern möchten.
  9. Auf der Speisekarte Datei auswählen Export.
  10. Gelistet Speichern unter Wählen Sie den Ordner aus, in dem Sie die Sicherungskopie des ActiveX-Schlüssels speichern möchten.
  11. Auf dem Feld Dateiname Geben Sie einen Namen für die Sicherungsdatei ein, z. B. „ActiveX-Sicherung“.
  12. Stellen Sie sicher, dass das Feld Sortiment exportieren Wert ausgewählt Ausgewählter Zweig.
  13. Klicken Speichern.
  14. Die Datei wird gespeichert mit .reg-Erweiterung.
  15. Sie haben jetzt eine Sicherung Ihres mit ActiveX zusammenhängenden Registryeintrags.

Die nächsten Schritte zum manuellen Bearbeiten der Registrierung werden in diesem Artikel nicht behandelt, da sie Ihr System wahrscheinlich beschädigen. Weitere Informationen zum manuellen Bearbeiten der Registrierung finden Sie unter den folgenden Links.