对象命名空间

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

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

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

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

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

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

内核对象命名空间