调试 Active Directory 扩展

本主题中记录的 Microsoft Active Directory 目录服务属性表、上下文菜单和对象创建向导扩展是作为 COM 进程内服务器实现的。 也就是说,每个扩展都是在主机进程的上下文中运行的 DLL。 要调试扩展,必须将扩展与应用程序关联起来,并在调试器中运行应用程序。

调试 Windows Shell 中显示的 Active Directory 扩展

Windows shell 中显示的 Active Directory 扩展将加载到 Explorer.exe 进程的上下文中。 这些扩展可以像标准 shell 扩展一样进行调试。 有关调试 shell 扩展的更多信息,请参阅使用 Shell 进行调试

调试 Active Directory MMC 管理单元中显示的 Active Directory 扩展

Active Directory 管理 MMC 管理单元中显示的 Active Directory 扩展将加载到 Microsoft 管理控制台的上下文中。 要调试扩展,请在本地系统中找到 Mmc.exe,并设置调试器以将其作为用于调试的应用程序。 在大多数系统中,Mmc.exe 都位于 Windows 系统目录中,例如 C:\WINNT\System32。 根据调试器的不同,可能需要也可能不需要将扩展 DLL 设置为也由调试器进行加载。 许多调试器还允许将调试器附加到正在运行的 MMC 进程。 有关详细信息,请参阅调试器用户指南。

让 MMC 自动加载特定管理单元可能会很方便。 为此,请将应用程序参数设置为 MSC 文件的路径和文件名。 这可以是系统安装的 MSC 文件,也可以是你创建的 MSC 文件。 可以按照以下步骤创建 MSC 文件。

  1. 运行 Mmc.exe。
  2. 在 MMC 菜单中选择文件 - 添加/删除管理单元...,然后再选择所需的管理单元以便进行加载。
  3. 选择 MMC 菜单中的文件 - 另存为...来保存 MSC 文件。

如果未设置启动 MSC 文件,则必须在调试器中运行应用程序时手动加载所需的管理单元。

在调试器中运行主机应用程序时,调试器可能会显示一条警告信息,指明正在运行的应用程序不包含任何调试符号。 这是意料之中的情况,可以放心忽略,因为你实际上是在调试 DLL,而不是主机应用程序。

在大多数情况下,只有当用户执行某些操作导致扩展被加载和初始化时,扩展才会被调用。 例如,如果正在调试为用户对象显示的上下文菜单扩展,该扩展将在首次显示用户对象的上下文菜单时才加载。

现在应该能够设置断点并查看调试输出。 如果扩展似乎没有加载,请在扩展的 DllGetClassObject 函数中设置一个断点。 如果未调用 DllGetClassObject,则扩展可能未正确注册。

调试完成后,退出 MMC,调试器将正常卸载。