Registrieren des KONTEXTMENÜ-COM-Objekts in einem Anzeigebezeichner

Wenn Sie COM verwenden, um eine Kontextmenüerweiterungs-DLL für einen Active Directory-Verzeichnisdienst zu erstellen, muss die Erweiterung bei der Windows-Registrierung registriert und Active Directory Domain Services werden, um die MmC-Snap-Ins für die Active Directory-Verwaltung und die Windows-Shell der Erweiterung zu benachrichtigen.

Registrierung in der Windows-Registrierung

Wie alle COM-Server muss eine Kontextmenüerweiterung in der Registrierung registriert werden. Die Erweiterung wird unter dem folgenden Schlüssel registriert.

HKEY_CLASSES_ROOT
   CLSID
      <clsid>

<clsid> ist die Zeichenfolgendarstellung der CLSID, die von der StringFromCLSID-Funktion erzeugt wird. Unter dem <clsid-Schlüssel> befindet sich ein InProcServer32-Schlüssel , der das Objekt als 32-Bit-In-Proc-Server identifiziert. Unter dem Schlüssel InProcServer32 wird der Speicherort der DLL im Standardwert angegeben, und das Threadingmodell wird im ThreadingModel-Wert angegeben. Alle Kontextmenüerweiterungen müssen das Threadingmodell "Apartment" verwenden.

Registrieren bei Active Directory Domain Services

Die Kontextmenüerweiterungsregistrierung ist spezifisch für ein Gebietsschema. Wenn die Kontextmenüerweiterung für alle Gebietsschemas gilt, muss sie im Objekt der Objektklasse displaySpecifier in allen Gebietsschemauntercontainern im Container Display Specifiers registriert werden. Wenn die Kontextmenüerweiterung für ein bestimmtes Gebietsschema lokalisiert ist, muss sie im displaySpecifier-Objekt im Untercontainer dieses Gebietsschemas registriert werden. Weitere Informationen zum Container und gebietsschemas display specifiers finden Sie unter Display Specifiers und DisplaySpecifiers Container.

Es gibt zwei Anzeigebezeichnerattribute, unter denen ein Kontextmenüerweiterungselement registriert werden kann. Dies sind adminContextMenu und shellContextMenu.

Das adminContextMenu-Attribut identifiziert administrative Kontextmenüs, die in Active Directory-Verwaltungs-Snap-Ins angezeigt werden sollen. Das Kontextmenü wird angezeigt, wenn der Benutzer das Kontextmenü für Objekte der entsprechenden Klasse in einem der Active Directory-Verwaltungs-MMC-Snap-Ins anzeigt.

Das shellContextMenu-Attribut identifiziert Kontextmenüs für Endbenutzer, die in der Windows-Shell angezeigt werden sollen. Das Kontextmenü wird angezeigt, wenn der Benutzer das Kontextmenü für Objekte der entsprechenden Klasse im Windows-Explorer anzeigt. Ab Windows Server 2003 zeigt die Windows-Shell keine Objekte mehr Active Directory Domain Services an.

Alle diese Attribute sind mehrwertige Attribute.

Beim Registrieren einer Kontextmenüerweiterung erfordern die Werte für die Attribute adminContextMenu und shellContextMenu das folgende Format.

<order number>,<clsid>

Die "<Bestellnummer>" ist eine vorzeichenlose Zahl, die die Elementposition im Kontextmenü darstellt. Wenn ein Kontextmenü angezeigt wird, werden die Werte anhand eines Vergleichs der "<Bestellnummer>" der einzelnen Werte sortiert. Wenn mehrere Werte dieselbe "<Bestellnummer>" aufweisen, werden diese Kontextmenüerweiterungen in der Reihenfolge geladen, in der sie vom Active Directory-Server gelesen werden. Verwenden Sie nach Möglichkeit eine nicht vorhandene "<Bestellnummer", d. h. eine Nummer>, die von anderen Werten in der Eigenschaft nicht verwendet wurde. Es gibt keine vorgeschriebene Startposition und Lücken sind in der Sequenz "<Bestellnummer>" zulässig.

Die "<clsid>" ist die Zeichenfolgendarstellung der CLSID, die von der StringFromCLSID-Funktion erzeugt wird.

In der Windows-Shell werden Kontextmenüelemente mit mehrfacher Auswahl unterstützt. In diesem Fall wird die Kontextmenüerweiterung für jedes ausgewählte Objekt aufgerufen. In Active Directory-Verwaltungs-Snap-Ins werden auch Kontextmenüerweiterungselemente mit mehrfacher Auswahl unterstützt. In diesem Fall enthält die DSOBJECTNAMES-Struktur eine DSOBJECT-Struktur für jedes ausgewählte Verzeichnisobjekt.

Wichtig

Für die Windows-Shell werden Anzeigebezeichnerinformationen bei der Benutzeranmeldung abgerufen und für die Sitzung des Benutzers zwischengespeichert. Bei den administrativen Snap-Ins werden die Anzeigebezeichnerdaten abgerufen, wenn das Snap-In geladen und für die Dauer des Prozesses zwischengespeichert wird. Für die Windows-Shell bedeutet dies, dass Änderungen an Anzeigebezeichnern wirksam werden, nachdem sich ein Benutzer abmeldet und wieder einschaltet. Für die administrativen Snap-Ins werden Änderungen wirksam, wenn die Snap-In- oder Konsolendatei neu geladen wird. Das heißt, wenn Sie eine neue instance der Konsolendatei oder eines neuen Mmc.exe instance starten und das Snap-In hinzufügen, werden die neuesten Anzeigebezeichnerdaten abgerufen.

 

Weitere Informationen und ein Codebeispiel zum Implementieren einer Kontextmenüerweiterung finden Sie unter Beispielcode für die Implementierung des KONTEXTMENÜ-COM-Objekts.