Freigeben über


Debuggen einer Active Directory-Erweiterung

Das Eigenschaftenblatt des Microsoft Active Directory-Verzeichnisdiensts, das Kontextmenü und die In diesem Thema dokumentierten Erweiterungen des Assistenten zum Erstellen von Objekten werden als com-in-proc-Server implementiert. Das heißt, jede Erweiterung ist eine DLL, die im Kontext des Hostprozesses ausgeführt wird. Zum Debuggen der Erweiterung müssen Sie die Erweiterung einer Anwendung zuordnen und die Anwendung in einem Debugger ausführen.

Debuggen von Active Directory-Erweiterungen, die in der Windows Shell angezeigt werden

In der Windows-Shell angezeigte Active Directory-Erweiterungen werden im Kontext des Explorer.exe-Prozesses geladen. Diese Erweiterungen können wie eine Standardshellerweiterung debuggen. Weitere Informationen zum Debuggen von Shellerweiterungen finden Sie unter Debuggen mit der Shell.

Debuggen von Active Directory-Erweiterungen, die im Active Directory-MMC-Snap-Ins angezeigt werden

Active Directory-Erweiterungen, die in den Active Directory-Verwaltungs-MMC-Snap-Ins angezeigt werden, werden im Kontext der Microsoft-Verwaltungskonsole geladen. Suchen Sie zum Debuggen einer Erweiterung nach Mmc.exe auf dem lokalen System, und legen Sie den Debugger so fest, dass er diese Anwendung zum Debuggen verwendet. Auf den meisten Systemen befindet sich Mmc.exe im Windows-Systemverzeichnis, z. B. C:\WINNT\System32. Je nach Debugger müssen Sie möglicherweise die Erweiterungs-DLL so festlegen, dass sie auch vom Debugger geladen wird. Mit vielen Debuggern können Sie den Debugger auch an einen ausgeführten MMC-Prozess anfügen. Weitere Informationen finden Sie im Benutzerhandbuch ihres Debuggers.

Es kann praktisch sein, dass MMC automatisch ein bestimmtes Snap-In lädt. Legen Sie dazu die Anwendungsargumente auf den Pfad und dateinamen einer MSC-Datei fest. Dies kann entweder eine vom System installierte MSC-Datei oder eine von Ihnen erstellte datei sein. Führen Sie die folgenden Schritte aus, um eine MSC-Datei zu erstellen.

  1. Führen Sie Mmc.exe aus.
  2. Laden Sie das gewünschte Snap-In, indem Sie im MMC-Menü Datei - Hinzufügen/Entfernen Snap-In... auswählen und das gewünschte Snap-In auswählen.
  3. Speichern Sie die MSC-Datei, indem Sie im MMC-Menü Datei - speichern unter... auswählen.

Wenn Sie keine MSC-Startdatei festlegen, müssen Sie das gewünschte Snap-In manuell laden, wenn Sie die Anwendung im Debugger ausführen.

Wenn die Hostanwendung im Debugger ausgeführt wird, zeigt der Debugger möglicherweise eine Warnmeldung an, die besagt, dass die ausgeführte Anwendung keine Debugsymbole enthält. Dies wird erwartet und kann sicher ignoriert werden, da Sie tatsächlich die DLL und nicht die Hostanwendung debuggen.

In den meisten Fällen wird die Erweiterung erst aufgerufen, wenn der Benutzer eine Aktion ausführt, die dazu führt, dass die Erweiterung geladen und initialisiert wird. Wenn Sie beispielsweise eine Kontextmenüerweiterung debuggen, die für Benutzerobjekte angezeigt wird, wird die Erweiterung erst geladen, wenn das Kontextmenü für ein Benutzerobjekt zum ersten Mal angezeigt wird.

Sie sollten jetzt in der Lage sein, Haltepunkte festzulegen und die Debugausgabe anzuzeigen. Wenn die Erweiterung nicht geladen zu werden scheint, legen Sie einen Haltepunkt in der DllGetClassObject-Funktion der Erweiterung fest. Wenn DllGetClassObject nicht aufgerufen wird, wird die Erweiterung wahrscheinlich nicht ordnungsgemäß registriert.

Wenn das Debuggen abgeschlossen ist, beenden Sie MMC, und der Debugger sollte normal entladen werden.