Objektnamespaces

Ein Objektnamespace schützt benannte Objekte vor nicht autorisiertem Zugriff. Durch das Erstellen eines privaten Namespaces können Anwendungen und Dienste eine sicherere Umgebung erstellen.

Ein Prozess kann mithilfe der CreatePrivateNamespace-Funktion einen privaten Namespace erstellen. Diese Funktion erfordert, dass Sie eine Grenze angeben, die definiert, wie die Objekte im Namespace isoliert werden sollen. Der Aufrufer muss innerhalb der angegebenen Grenze sein, damit der Erstellungsvorgang erfolgreich ist. Verwenden Sie zum Angeben einer Grenze die Funktionen CreateBoundaryDescriptor und AddSIDToBoundaryDescriptor .

Der parameter lpAliasPrefix von CreatePrivateNamespace dient als Name des Namespace. Jeder Namespace wird durch seinen Namen und seine Grenzen eindeutig identifiziert. Das System unterstützt mehrere private Namespaces mit demselben Namen, sofern sie unterschiedliche Grenzen angeben.

Angenommen, ein Prozess fordert die Erstellung eines Namespaces (NS1) an, der eine Grenze definiert, die zwei Elemente enthält: die Administrator-SID und die aktuelle Sitzungsnummer. Der Namespace wird erstellt, wenn der Prozess unter dem Administratorkonto in der angegebenen Sitzung ausgeführt wird. Ein anderer Prozess kann mithilfe der OpenPrivateNamespace-Funktion auf diesen Namespace zugreifen. Sowohl der angegebene Name als auch die angegebene Grenze müssen übereinstimmen, wenn dieser Prozess den vom ersten Prozess erstellten Namespace öffnen soll. Beachten Sie, dass ein Prozess einen vorhandenen Namespace auch dann öffnen kann, wenn er nicht innerhalb der Grenze liegt, es sei denn, der Ersteller hat den Zugriff auf den Namespace mithilfe des parameters lpPrivateNamespaceAttributes eingeschränkt.

Die objekte, die in diesem Namespace erstellt werden, haben Namen im Format präfix\objectname. Das Präfix ist der Namespacename, der vom lpAliasPrefix-Parameter von CreatePrivateNamespace angegeben wird. Um beispielsweise ein Ereignisobjekt namens MyEvent im NS1-Namespace zu erstellen, rufen Sie die CreateEvent-Funktion auf, wobei der lpName-Parameter auf NS1\MyEvent festgelegt ist.

Der Prozess, der den Namespace erstellt hat, kann die ClosePrivateNamespace-Funktion verwenden, um das Handle für den Namespace zu schließen. Das Handle wird auch geschlossen, wenn der Prozess, der den Namespace erstellt hat, beendet wird. Nachdem das Namespacehandle geschlossen wurde, schlagen nachfolgende Aufrufe von OpenPrivateNamespace fehl, aber alle Vorgänge für Objekte im Namespace sind erfolgreich.

Kernelobjektnamespaces