注册静态上下文菜单项

Active Directory 域服务的管理 MMC 管理单元和 Windows shell 提供了一种机制,可将项目添加到 Active Directory 域服务中对象显示的上下文菜单中。 上下文菜单可以调用任何能使用 ShellExecute API 启动的文件,例如应用程序或网页 URL。

注册 Active Directory 域服务

上下文菜单扩展注册只适用于一个区域设置。 如果上下文菜单扩展适用于所有区域设置,则它必须在显示说明符容器中的所有区域设置子容器的对象类 displaySpecifier 对象中注册。 如果上下文菜单扩展针对特定的本地化区域设置,则必须在该区域设置的子容器的 displaySpecifier 对象中注册。 有关 Display Specifiers 容器和区域设置的详细信息,请参阅显示说明符DisplaySpecifiers 容器

静态上下文菜单项可在两个显示规范属性下注册:adminContextMenushellContextMenu

adminContextMenu 属性用于标识 Active Directory 域服务管理单元中要显示的管理上下文菜单。 当用户在某个管理 MMC 管理单元中显示相应类别对象的上下文菜单时,上下文菜单就会出现。

shellContextMenu 属性标识要在 Windows shell 中显示的最终用户上下文菜单。 当用户在 Windows 资源管理器中查看相应类对象的上下文菜单时,上下文菜单就会出现。 从 Windows Server 2003 开始,Windows shell 不再显示 Active Directory 域服务中的对象。

所有这些属性都是多值属性。

注册静态上下文菜单项时,adminContextMenushellContextMenu 属性的值需要采用以下格式。

<order number>,<menu text>,<command>

“<order number>”是一个无符号数字,表示项目在上下文菜单中的位置。 显示上下文菜单时,将使用每个值的“<序号>”比较对值进行排序。 如果多个值具有相同的“<order number>”,则会按照从 Active Directory 服务器读取的顺序加载这些上下文菜单扩展。 如果可能,请使用不存在的“<order number>”,即一个未被属性中其他值使用过的值。 在“<order number>“序列中,没有规定的起始位置,也允许存在间隙。

“<menu text>”是上下文菜单中显示的字符串。 “<menu text>”可以包含一个“&”字符,该字符位于菜单项的键盘快捷字符前面。 这将让前面的字符被加上下划线。 例如,如果“<menu text>”为“&File”,则菜单文本将显示为“File”,而“F”将带有下划线,表示它是该菜单项的键盘快捷键。

“<command>”是由管理单元执行的程序或文件。 必须指定完整路径,或者文件必须存在于计算机路径环境变量中。 该文件使用 ShellExecute 函数来调用。 “<command>”不能包含其他参数,例如 Notepad.exe Myfile.txt。 由于使用了 ShellExecute,因此任何可以传递给 ShellExecute 的文件或地址都可以用于“<command>”。 例如,如果“<command>” 包含“d:\file.txt”,则 d:\file.txt 将使用与 .txt 扩展名关联的应用程序来打开。 同样,如果“<command>”包含“https://www.fabrikam.com"”,则会打开默认网页浏览器并显示指定的网页。 允许使用带空格的路径和应用程序名称。 如果“<command>“是应用程序,则所选对象的 ADsPath 和类将作为命令行参数传递,中间以空格隔开。

在 Windows shell 中,支持多选上下文菜单项。 在这种情况下,将为每个所选对象调用“<command>”。 在 Active Directory 域服务的管理单元中,不支持多选静态上下文菜单项。

重要

对于 Windows shell,显示说明符数据在用户登录时获取,并在用户会话中缓存。 对于管理单元,在加载管理单元时会检索显示说明符数据,并在进程过程中缓存这些数据。 对 Windows shell 而言,这意味着对显示说明符的更改会在用户注销并重新登录后生效。 对于管理单元,更改会在重新加载管理单元或控制台文件时生效;也就是说,如果启动控制台文件的新实例或新 Mmc.exe 实例并添加管理单元,就会检索到最新的显示说明符数据。

 

有关详细信息和代码示例,请参阅安装静态上下文菜单项的代码示例