创建和维护服务连接点

使用 SCP 发布时,请记住它必须包含有关服务实例的当前数据。 否则,绑定到 SCP 的客户端会检索过时的数据。 创建 SCP 的服务安装程序会指定 SCP 属性的初始值。 然后,当服务实例启动时,它必须找到 SCP 并在必要时更新属性值。 这样,客户就能确保获得最新的数据。

创建 SCP 后,服务安装程序还会执行另外两个步骤,使服务能够更新 SCP:

  • 在 SCP 对象的安全描述符中设置 ACE,使服务能够在运行时修改 SCP 属性。 有关详细信息和代码示例,请参阅启用服务帐户以访问 SCP 属性
  • 将 SCP 的 objectGUID 缓存到服务主机计算机的注册表中。 该服务会检索缓存的 GUID,以便与 SCP 绑定,从而验证和更新其属性。

服务安装程序会缓存 SCP 的 objectGUID 而不是其 DN。 无论 SCP 是否移动或重命名,objectGUID 都不会改变。 如果管理员移动或重命名 SCP,则 DN 可能会发生变化。 例如,如果将 SCP 创建为计算机对象的子对象,则当计算机重命名或移动到不同的域或组织单位时,SCP 的可分辨名称就会改变。

当服务安装程序创建 SCP 时,它必须读取新创建对象的 objectGUID 并将其缓存到服务主机的注册表中。 使用 IADs::get_GUID 方法,以适合绑定的字符串格式获取 objectGUID 值。 将 GUID 字符串缓存为以下注册表项下的值。

HKEY_LOCAL_MACHINE
   vendor name
      product name

其中,“vendor name”和“product name”标识了供应商和产品。

当服务启动时,它会从注册表中检索缓存的 GUID 字符串,并使用它绑定到 SCP。 该服务会读取重要的 SCP 属性,并将其与当前值进行比较。 如果 SCP 值已过时,服务会对其进行更新。 服务可能需要更新的值包括 keywordsserviceBindingInformationserviceDNSNameserviceDNSNameType

示例