从 Windows 7 开始, LocationPath 注册表子项指定通过 HardwareID 或 CompatibleID 注册表子项标识的单个设备的可移动设备功能替代的位置路径。 有关可移动设备功能替代的详细信息,请参阅 DeviceOverrides 注册表项。
LocationPath 注册表子项仅将可移动设备功能值应用于位于指定位置路径上的设备节点(devnode)。 这允许将可移动设备功能替代应用于系统中安装的设备的单个实例。 在其他位置路径上具有相同 HardwareID 或 CompatibleID 的其他设备不受此类可移动设备功能替代的影响。
按照约定,位置路径字符串采用 ServiceName(BusSpecificLocation)的形式。 例如,PCI 设备使用 PCI(XXYY),其中 XX 是设备编号, YY 是函数号。 该字符串对于设备相对于其总线是唯一的。 即插即用(PnP)管理器为设备节点树中的每个节点组装位置路径。 树中的每个设备节点将其服务名称字符串连接到其父设备节点提供的位置路径字符串的末尾。 因此,可以通过定位路径唯一确定树中任何 devnode 的位置。
下表定义了 LocationPath 注册表子项的格式和要求。
| 注册表子项名称 | 必需/可选 | 格式要求 | 父键 | 子项 |
|---|---|---|---|---|
有效的“LocationPath”值 |
可选(*或有效的位置路径必须存在以指示可移动设备功能替代的范围) |
没有 |
没有 |
必须存在 LocationPath 或 * 注册表子项,以指示可移动设备功能替代的范围。
LocationPath 子项必须包含可移动 DWORD 值,该值指定设备是否可移动。 下表定义了有效的可移动 值。
| 可移动值 | 说明 |
|---|---|
0 |
devnode应视为不可移动 |
1 |
应将设备节点视为可移除设备 |
给定设备节点的定位路径字符串可以通过以下步骤在设备管理器中显示:
打开设备管理器,找到需要应用注册表覆盖的设备节点。 为此,可能需要将视图更改为 按连接排列的设备。
右键单击设备节点,单击“属性”,然后单击“详细信息”选项卡。
在 “属性” 下拉列表中,找到 LocationPaths 属性。 此属性包含此 devnode 的位置路径字符串,是应用于 LocationPath 注册表子项的值。
注意 开发节点可能没有LocationPaths的值。 这是因为此开发节点或其其中一个父节点的驱动程序未实现 GUID_PNP_LOCATION_INTERFACE 接口。 在这种情况下,必须检查 LocationPaths 属性的父 devnode。
LocationPaths 注册表子项旨在用于覆盖硬连接到固定总线位置的设备的可移动设备功能。 这通常发生在便携式计算机中,包括以下设备:
无线网络适配器
蓝牙适配器
键盘或指向设备
这些设备存在于不同内部总线的固定位置上,用户无法更改这些位置。 LocationPaths 覆盖功能允许您指定只有位于特定总线位置的设备会受到可移动设备功能覆盖的影响。 这可以防止重写影响到其他总线位置的设备,这些设备可能与重写目标共享相同的 HardwareID 或 CompatibleID 子项值。 当设备仅指定 兼容 ID 子项值以匹配收件箱驱动程序时,这很常见。
使用 ChildLocationPaths 注册表子项覆盖子设备节点的可移动设备功能时,通常在特定位置仅针对子设备节点,而不考虑它们是哪种设备,非常有用。
例如,笔记本电脑可能有一个内部 USB 中心,其中包含内部和外部端口。 如果此 USB 中心错误地将其内部端口报告为外部端口,则任何内部硬连接到这些端口的设备被错误地识别为可移动。 同样,如果所有端口都错误地报告为内部端口,则任何外部连接的设备都被视为笔记本电脑的不可访问部分。
若要发现连接到外部 USB 端口的设备的位置路径值,可以将任何设备插入端口并观察其位置路径属性。 插入同一端口的任何其他 USB 设备都应接收相同的位置路径值,因为父总线及其在内部标识端口的方式永远不会更改。