对象命名空间

对象命名空间 保护命名对象免受未经授权的访问。 创建专用命名空间使应用程序和服务能够构建更安全的环境。

进程可以使用 CreatePrivateNamespace 函数创建专用命名空间。 此函数要求指定一个 边界,该边界定义如何隔离命名空间中的对象。 调用方必须位于指定的边界内,才能使创建作成功。 若要指定边界,请使用 CreateBoundaryDescriptorAddSIDToBoundaryDescriptor 函数。

CreatePrivateNamespacelpAliasPrefix 参数用作命名空间的名称。 每个命名空间都由其名称和边界唯一标识。 只要系统指定不同的边界,系统就支持具有相同名称的多个专用命名空间。

假设一个进程请求创建命名空间 NS1,该命名空间定义包含两个元素的边界:管理员 SID 和当前会话编号。 如果进程在指定会话中的管理员帐户下运行,则会创建命名空间。 另一个进程可以使用 OpenPrivateNamespace 函数访问此命名空间。 如果此过程是打开第一个进程创建的命名空间,则指定的名称和边界必须匹配。 请注意,即使进程不在边界内,进程也可以打开现有命名空间,除非创建者使用 lpPrivateNamespaceAttributes 参数限制对命名空间的访问。

在此命名空间中创建的对象的名称 前缀\objectname。 前缀是由 CreatePrivateNamespacelpAliasPrefix 参数指定的命名空间名称。 例如,若要在 NS1 命名空间中创建名为 MyEvent 的事件对象,请调用 CreateEvent 函数,并将 lpName 参数设置为 NS1\MyEvent。

创建命名空间的进程可以使用 ClosePrivateNamespace 函数关闭命名空间的句柄。 创建命名空间的进程终止时,句柄也会关闭。 关闭命名空间句柄后,后续调用 OpenPrivateNamespace 失败,但命名空间中对象的所有作都成功。

内核对象命名空间