对象命名空间
对象命名空间保护命名对象免受未经授权的访问。 创建专用命名空间使应用程序和服务能够构建更安全的环境。
进程可以使用 CreatePrivateNamespace 函数创建专用命名空间。 此函数要求指定一个边界,该 边界 定义如何隔离命名空间中的对象。 调用方必须在指定的边界内才能成功执行创建操作。 若要指定边界,请使用 CreateBoundaryDescriptor 和 AddSIDToBoundaryDescriptor 函数。
CreatePrivateNamespace 的 lpAliasPrefix 参数用作命名空间的名称。 每个命名空间都由其名称和边界唯一标识。 只要指定不同的边界,系统就支持多个同名的专用命名空间。
假设某个进程请求创建命名空间 NS1,该命名空间定义包含两个元素的边界:管理员 SID 和当前会话编号。 如果进程在指定会话中的管理员帐户下运行,则会创建命名空间。 另一个进程可以使用 OpenPrivateNamespace 函数访问此命名空间。 如果此进程要打开由第一个进程创建的命名空间,则指定的名称和边界必须匹配。 请注意,进程可以打开现有命名空间,即使它不在边界内,除非创建者使用 lpPrivateNamespaceAttributes 参数限制对命名空间的访问。
在此命名空间中创建的对象的名称采用 前缀\objectname 的形式。 前缀是由 CreatePrivateNamespace 的 lpAliasPrefix 参数指定的命名空间名称。 例如,若要在 NS1 命名空间中创建名为 MyEvent 的事件对象,请调用 CreateEvent 函数,并将 lpName 参数设置为 NS1\MyEvent。
创建命名空间的进程可以使用 ClosePrivateNamespace 函数关闭命名空间的句柄。 创建命名空间的进程终止时,句柄也会关闭。 关闭命名空间句柄后,对 OpenPrivateNamespace 的后续调用将失败,但对命名空间中的对象执行的所有操作都会成功。
相关主题