Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Serveranwendung kann die CreateProcessAsUser--Funktion aufrufen, um einen neuen Prozess zu erstellen, der im Sicherheitskontext eines Clientsausgeführt wird. Beim Aufruf mit dem Zugriffstoken eines Clientserfordert CreateProcessAsUser- die SE_ASSIGNPRIMARYTOKEN_NAME und SE_INCREASE_QUOTA_NAME Berechtigungen, die von Windows-Diensten, die im LocalSystem-Kontoausgeführt werden.
Für die CreateProcessAsUser--Funktion ist auch ein primäres Zugriffstokenerforderlich. Ein Server kann ein primäres Zugriffstoken für einen Client abrufen, entweder durch Starten einer Anmeldesitzung für den Client oder durch Identitätswechsel des Clients und Duplizieren des Identitätswechseltokens.
Die folgenden Verfahren beschreiben zwei Möglichkeiten zum Erstellen eines Clientprozesses.
So erstellen Sie einen Clientprozess, indem Sie sich beim Client anmelden
- Melden Sie den Client mit den Anmeldeinformationen des Clients an dem lokalen Computer an, in einem Aufruf von LogonUser-. LogonUser erzeugt ein primäres Token für die Anmeldesitzung des Clients.
- Wenn der Server den Sicherheitskontext des Clients verwenden muss, erhalten Sie Zugriff auf die ausführbare Datei für den Client Prozess, indem Sie das primäre Token in einem Aufruf der ImpersonateLoggedOnUser--Funktion verwenden.
- Erstellen Sie einen Prozess im Sicherheitskontext des Clients, indem Sie das primäre Token in einem Aufruf von CreateProcessAsUserverwenden.
Anmerkung
Ein prozess, der mit der folgenden Technik erstellt wurde, kann möglicherweise nicht auf Netzwerkressourcen zugreifen, es sei denn, er verfügt über die Anmeldeinformationen des Clients.
So erstellen Sie einen Clientprozess, indem Sie die Identität des Client-
- Starten Sie den Identitätswechsel mithilfe einer Identitätswechselfunktion, z. B. ImpersonateNamedPipeClient.
- Rufen Sie die OpenThreadToken--Funktion auf, um ein Identitätswechseltoken mit dem Sicherheitskontext des Clients abzurufen.
- Rufen Sie die DuplicateTokenEx--Funktion auf, um das Identitätswechseltoken in ein primäres Token zu konvertieren.
- Verwenden Sie das primäre Token in einem Aufruf der CreateProcessAsUser--Funktion, um einen Prozess im Sicherheitskontext des Clients zu erstellen.
Standardmäßig erstellt CreateProcessAsUser den Client Prozess auf einer nichtinteraktiven Fensterstation und einem Desktop. Um einen interaktiven Prozess zu erstellen, muss der Server zuerst die ermessensberechtigten Zugriffssteuerungslisten (DACLs) der interaktiven Fensterstation und des Desktops festlegen, um sicherzustellen, dass der Client darauf zugreifen darf. Die bevorzugte Möglichkeit besteht darin, den Client zu protokollieren, die Sicherheits-ID (SID) der Anmeldesitzung des Clientsabzurufen und diese SID dann sowohl auf der interaktiven Fensterstation als auch auf dem Desktop zu verwenden. Der Server kann dann CreateProcessAsUser-aufrufen und dabei die interaktive Fensterstation und den Desktop winsta0\default angeben. Ein Beispiel für dieses Verfahren finden Sie unter Starten eines interaktiven Clientprozesses in C++-.