Freigeben über


CAccessToken-Klasse

Diese Klasse ist ein Wrapper für ein Zugriffstoken.

Wichtig

Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Syntax

class CAccessToken

Member

Öffentliche Konstruktoren

Name Beschreibung
CAccessToken::~CAccessToken Der Destruktor.

Öffentliche Methoden

Name Beschreibung
CAccessToken::Attach Rufen Sie diese Methode auf, um den Besitz des angegebenen Zugriffstokenhandles zu übernehmen.
CAccessToken::CheckTokenMembership Rufen Sie diese Methode auf, um festzustellen, ob eine angegebene SID im CAccessToken Objekt aktiviert ist.
CAccessToken::CreateImpersonationToken Rufen Sie diese Methode auf, um ein neues Identitätswechselzugriffstoken zu erstellen.
CAccessToken::CreatePrimaryToken Rufen Sie diese Methode auf, um ein neues primäres Token zu erstellen.
CAccessToken::CreateProcessAsUser Rufen Sie diese Methode auf, um einen neuen Prozess zu erstellen, der im Sicherheitskontext des benutzers ausgeführt wird, der durch das CAccessToken Objekt dargestellt wird.
CAccessToken::CreateRestrictedToken Rufen Sie diese Methode auf, um ein neues, eingeschränktes CAccessToken Objekt zu erstellen.
CAccessToken::D etach Rufen Sie diese Methode auf, um den Besitz des Zugriffstokens zu widerrufen.
CAccessToken::D isablePrivilege Rufen Sie diese Methode auf, um eine Berechtigung im CAccessToken Objekt zu deaktivieren.
CAccessToken::D isablePrivileges Rufen Sie diese Methode auf, um ein oder mehrere Berechtigungen im CAccessToken Objekt zu deaktivieren.
CAccessToken::EnablePrivilege Rufen Sie diese Methode auf, um ein Privileg im CAccessToken Objekt zu aktivieren.
CAccessToken::EnablePrivileges Rufen Sie diese Methode auf, um ein oder mehrere Berechtigungen im CAccessToken Objekt zu aktivieren.
CAccessToken::GetDefaultDacl Rufen Sie diese Methode auf, um die standardmäßige DACL des CAccessToken Objekts zurückzugeben.
CAccessToken::GetEffectiveToken Rufen Sie diese Methode auf, um das Objekt abzurufen, das CAccessToken dem Zugriffstoken entspricht, das für den aktuellen Thread wirksam ist.
CAccessToken::GetGroups Rufen Sie diese Methode auf, um die Tokengruppen des CAccessToken Objekts zurückzugeben.
CAccessToken::GetHandle Rufen Sie diese Methode auf, um ein Handle für das Zugriffstoken abzurufen.
CAccessToken::GetImpersonationLevel Rufen Sie diese Methode auf, um die Identitätswechselebene aus dem Zugriffstoken abzurufen.
CAccessToken::GetLogonSessionId Rufen Sie diese Methode auf, um die dem Objekt zugeordnete CAccessToken Anmeldesitzungs-ID abzurufen.
CAccessToken::GetLogonSid Rufen Sie diese Methode auf, um die dem Objekt zugeordnete CAccessToken Anmelde-SID abzurufen.
CAccessToken::GetOwner Rufen Sie diese Methode auf, um den besitzer abzurufen, der dem CAccessToken Objekt zugeordnet ist.
CAccessToken::GetPrimaryGroup Rufen Sie diese Methode auf, um die primäre Gruppe abzurufen, die dem CAccessToken Objekt zugeordnet ist.
CAccessToken::GetPrivileges Rufen Sie diese Methode auf, um die berechtigungen abzurufen, die dem CAccessToken Objekt zugeordnet sind.
CAccessToken::GetProcessToken Rufen Sie diese Methode auf, um CAccessToken mit dem Zugriffstoken aus einem Prozess zu initialisieren.
CAccessToken::GetProfile Rufen Sie diese Methode auf, um das Handle abzurufen, das auf das Benutzerprofil verweist, das dem CAccessToken Objekt zugeordnet ist.
CAccessToken::GetSource Rufen Sie diese Methode auf, um die Quelle des CAccessToken Objekts abzurufen.
CAccessToken::GetStatistics Rufen Sie diese Methode auf, um Informationen abzurufen, die dem CAccessToken Objekt zugeordnet sind.
CAccessToken::GetTerminalServicesSessionId Rufen Sie diese Methode auf, um die Sitzungs-ID der Terminaldienste abzurufen, die dem CAccessToken Objekt zugeordnet ist.
CAccessToken::GetThreadToken Rufen Sie diese Methode auf, um das CAccessToken Token aus dem angegebenen Thread zu initialisieren.
CAccessToken::GetTokenId Rufen Sie diese Methode auf, um die dem Objekt zugeordnete CAccessToken Token-ID abzurufen.
CAccessToken::GetType Rufen Sie diese Methode auf, um den Tokentyp des CAccessToken Objekts abzurufen.
CAccessToken::GetUser Rufen Sie diese Methode auf, um den benutzer zu identifizieren, der dem CAccessToken Objekt zugeordnet ist.
CAccessToken::HKeyCurrentUser Rufen Sie diese Methode auf, um das Handle abzurufen, das auf das Benutzerprofil verweist, das dem CAccessToken Objekt zugeordnet ist.
CAccessToken::Identitätswechsel Rufen Sie diese Methode auf, um einem Thread einen Identitätswechsel CAccessToken zuzuweisen.
CAccessToken::ImpersonateLoggedOnUser Rufen Sie diese Methode auf, damit der aufrufende Thread den Sicherheitskontext eines angemeldeten Benutzers annehmen kann.
CAccessToken::IsTokenRestricted Rufen Sie diese Methode auf, um zu testen, ob das CAccessToken Objekt eine Liste eingeschränkter SIDs enthält.
CAccessToken::LoadUserProfile Rufen Sie diese Methode auf, um das dem Objekt zugeordnete CAccessToken Benutzerprofil zu laden.
CAccessToken::LogonUser Rufen Sie diese Methode auf, um eine Anmeldesitzung für den Benutzer zu erstellen, der den angegebenen Anmeldeinformationen zugeordnet ist.
CAccessToken::OpenCOMClientToken Rufen Sie diese Methode von einem COM-Server auf, der einen Aufruf eines Clients verarbeitet, um das CAccessToken Zugriffstoken vom COM-Client zu initialisieren.
CAccessToken::OpenNamedPipeClientToken Rufen Sie diese Methode von einem Server auf, der Anforderungen über eine benannte Pipe übernimmt, um das CAccessToken Zugriffstoken vom Client zu initialisieren.
CAccessToken::OpenRPCClientToken Rufen Sie diese Methode von einem Server auf, der einen Aufruf eines RPC-Clients verarbeitet, um das CAccessToken Zugriffstoken vom Client zu initialisieren.
CAccessToken::OpenThreadToken Rufen Sie diese Methode auf, um die Identitätswechselebene festzulegen und dann das CAccessToken Token aus dem angegebenen Thread zu initialisieren.
CAccessToken::P rivilegeCheck Rufen Sie diese Methode auf, um zu bestimmen, ob eine bestimmte Gruppe von Berechtigungen im CAccessToken Objekt aktiviert ist.
CAccessToken::Revert Rufen Sie diese Methode auf, um einen Thread zu beenden, der ein Identitätswechseltoken verwendet.
CAccessToken::SetDefaultDacl Rufen Sie diese Methode auf, um die standardmäßige DACL des CAccessToken Objekts festzulegen.
CAccessToken::SetOwner Rufen Sie diese Methode auf, um den Besitzer des CAccessToken Objekts festzulegen.
CAccessToken::SetPrimaryGroup Rufen Sie diese Methode auf, um die primäre Gruppe des CAccessToken Objekts festzulegen.

Hinweise

Ein Zugriffstoken ist ein Objekt, das den Sicherheitskontext eines Prozesses oder Threads beschreibt und jedem Benutzer zugewiesen wird, der bei einem Windows-System angemeldet ist.

Eine Einführung in das Zugriffssteuerungsmodell in Windows finden Sie unter Access Control im Windows SDK.

Anforderungen

Kopfzeile: atlsecurity.h

CAccessToken::Attach

Rufen Sie diese Methode auf, um den Besitz des angegebenen Zugriffstokenhandles zu übernehmen.

void Attach(HANDLE hToken) throw();

Parameter

hToken
Ein Handle für das Zugriffstoken.

Hinweise

In Debugbuilds tritt ein Assertionsfehler auf, wenn das CAccessToken Objekt bereits über den Besitz eines Zugriffstokens verfügt.

CAccessToken::~CAccessToken

Der Destruktor.

virtual ~CAccessToken() throw();

Hinweise

Gibt alle zugeordneten Ressourcen frei.

CAccessToken::CheckTokenMembership

Rufen Sie diese Methode auf, um festzustellen, ob eine angegebene SID im CAccessToken Objekt aktiviert ist.

bool CheckTokenMembership(
    const CSid& rSid,
    bool* pbIsMember) const throw(...);

Parameter

rSid
Verweisen auf ein CSid Class-Objekt .

pbIsMember
Zeigen Sie auf eine Variable, die die Ergebnisse der Prüfung empfängt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die CheckTokenMembership Methode überprüft das Vorhandensein der SID in den Benutzer- und Gruppen-SIDs des Zugriffstokens. Wenn die SID vorhanden ist und das attribut SE_GROUP_ENABLED hat, wird PbIsMember auf TRUE festgelegt. Andernfalls wird sie auf FALSE festgelegt.

In Debugbuilds tritt ein Assertionsfehler auf, wenn pbIsMember kein gültiger Zeiger ist.

Hinweis

Das CAccessToken Objekt muss ein Identitätswechseltoken und kein primäres Token sein.

CAccessToken::CreateImpersonationToken

Rufen Sie diese Methode auf, um ein Identitätswechselzugriffstoken zu erstellen.

bool CreateImpersonationToken(
    CAccessToken* pImp,
    SECURITY_IMPERSONATION_LEVEL sil = SecurityImpersonation) const throw(...);

Parameter

Zuhälter
Zeigen Sie auf das neue CAccessToken Objekt.

sil
Gibt einen SECURITY_IMPERSONATION_LEVEL aufgezählten Typ an, der die Identitätswechselebene des neuen Tokens bereitstellt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

CreateImpersonationToken ruft DuplicateToken auf, um ein neues Identitätswechseltoken zu erstellen.

CAccessToken::CreatePrimaryToken

Rufen Sie diese Methode auf, um ein neues primäres Token zu erstellen.

bool CreatePrimaryToken(
    CAccessToken* pPri,
    DWORD dwDesiredAccess = MAXIMUM_ALLOWED,
    const CSecurityAttributes* pTokenAttributes = NULL) const throw(...);

Parameter

pPri
Zeigen Sie auf das neue CAccessToken Objekt.

dwDesiredAccess
Gibt die angeforderten Zugriffsrechte für das neue Token an. Standardmäßig fordert MAXIMUM_ALLOWED alle Für den Anrufer gültigen Zugriffsrechte an. Weitere Informationen zu Zugriffsrechten finden Sie unter Zugriffsberechtigungen und Zugriffsmasken .

pTokenAttributes
Zeiger auf eine SECURITY_ATTRIBUTES-Struktur , die einen Sicherheitsdeskriptor für das neue Token angibt und bestimmt, ob untergeordnete Prozesse das Token erben können. Wenn pTokenAttributes NULL ist, erhält das Token einen Standardsicherheitsdeskriptor, und der Handle kann nicht geerbt werden.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

CreatePrimaryToken ruft DuplicateTokenEx auf, um ein neues primäres Token zu erstellen.

CAccessToken::CreateProcessAsUser

Rufen Sie diese Methode auf, um einen neuen Prozess zu erstellen, der im Sicherheitskontext des benutzers ausgeführt wird, der durch das CAccessToken Objekt dargestellt wird.

bool CreateProcessAsUser(
    LPCTSTR pApplicationName,
    LPTSTR pCommandLine,
    LPPROCESS_INFORMATION pProcessInformation,
    LPSTARTUPINFO pStartupInfo,
    DWORD dwCreationFlags = NORMAL_PRIORITY_CLASS,
    bool bLoadProfile = false,
    const CSecurityAttributes* pProcessAttributes = NULL,
    const CSecurityAttributes* pThreadAttributes = NULL,
    bool bInherit = false,
    LPCTSTR pCurrentDirectory = NULL) throw();

Parameter

pApplicationName
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die das auszuführende Modul angibt. Dieser Parameter darf nicht NULL sein.

pCommandLine
Zeiger auf eine mit Null beendete Zeichenfolge, die die auszuführende Befehlszeile angibt.

pProcessInformation
Zeigen Sie auf eine PROCESS_INFORMATION Struktur , die Identifikationsinformationen zum neuen Prozess empfängt.

pStartupInfo
Zeigen Sie auf eine STARTUPINFO-Struktur , die angibt, wie das Hauptfenster für den neuen Prozess angezeigt werden soll.

dwCreationFlags
Gibt zusätzliche Flags an, die die Prioritätsklasse und die Erstellung des Prozesses steuern. Eine Liste der Flags finden Sie in der Win32-Funktion CreateProcessAsUser .

bLoadProfile
Wenn TRUE, wird das Profil des Benutzers mit LoadUserProfile geladen.

pProcessAttributes
Zeiger auf eine SECURITY_ATTRIBUTES-Struktur , die einen Sicherheitsdeskriptor für den neuen Prozess angibt und bestimmt, ob untergeordnete Prozesse den zurückgegebenen Handle erben können. Wenn pProcessAttributes NULL ist, ruft der Prozess einen Standardsicherheitsdeskriptor ab, und der Handle kann nicht geerbt werden.

pThreadAttributes
Zeiger auf eine SECURITY_ATTRIBUTES-Struktur , die einen Sicherheitsdeskriptor für den neuen Thread angibt, und bestimmt, ob untergeordnete Prozesse den zurückgegebenen Handle erben können. Wenn pThreadAttributes NULL ist, erhält der Thread einen Standardsicherheitsdeskriptor, und der Handle kann nicht geerbt werden.

bInherit
Gibt an, ob der neue Prozess Handles vom aufrufenden Prozess erbt. Wenn WAHR, wird jedes vererbbare offene Handle im aufrufenden Prozess vom neuen Prozess geerbt. Geerbte Handles weisen denselben Wert und zugriffsberechtigungen wie die ursprünglichen Handles auf.

pCurrentDirectory
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die das aktuelle Laufwerk und verzeichnis für den neuen Prozess angibt. Die Zeichenfolge muss ein vollständiger Pfad sein, der einen Laufwerkbuchstaben enthält. Wenn dieser Parameter NULL ist, verwendet der neue Prozess dasselbe aktuelle Laufwerk und Verzeichnis wie der aufrufende Prozess.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

CreateProcessAsUser verwendet die CreateProcessAsUser Win32-Funktion, um einen neuen Prozess zu erstellen, der im Sicherheitskontext des durch das CAccessToken Objekt dargestellten Benutzers ausgeführt wird. Eine vollständige Erläuterung der erforderlichen Parameter finden Sie in der Beschreibung der CreateProcessAsUser-Funktion .

Damit diese Methode erfolgreich ausgeführt werden kann, muss das CAccessToken Objekt AssignPrimaryToken (es sei denn, es ist ein eingeschränktes Token) und die Rechte "IncreaseQuota" enthalten.

CAccessToken::CreateRestrictedToken

Rufen Sie diese Methode auf, um ein neues, eingeschränktes CAccessToken Objekt zu erstellen.

bool CreateRestrictedToken(
    CAccessToken* pRestrictedToken,
    const CTokenGroups& SidsToDisable,
    const CTokenGroups& SidsToRestrict,
    const CTokenPrivileges& PrivilegesToDelete = CTokenPrivileges()) const throw(...);

Parameter

pRestrictedToken
Das neue, eingeschränkte CAccessToken Objekt.

SidsToDisable
Ein CTokenGroups Objekt, das die nur deny-only-SIDs angibt.

SidsToRestrict
Ein CTokenGroups Objekt, das die einschränkenden SIDs angibt.

PrivilegesToDelete
Ein CTokenPrivileges Objekt, das die Berechtigungen angibt, die im eingeschränkten Token gelöscht werden sollen. Der Standardwert erstellt ein leeres Objekt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

CreateRestrictedToken verwendet die CreateRestrictedToken Win32-Funktion, um ein neues CAccessToken Objekt mit Einschränkungen zu erstellen.

Wichtig

Stellen Sie bei Verwendung CreateRestrictedTokenfolgendes sicher: Das vorhandene Token ist gültig (und nicht vom Benutzer eingegeben) und SidsToDisable und PrivilegesToDelete sind beide gültig (und nicht vom Benutzer eingegeben). Wenn die Methode FALSE zurückgibt, verweigern Sie die Funktionalität.

CAccessToken::D etach

Rufen Sie diese Methode auf, um den Besitz des Zugriffstokens zu widerrufen.

HANDLE Detach() throw();

Rückgabewert

Gibt den Ziehpunkt zurück, der CAccessToken getrennt wurde.

Hinweise

Diese Methode widerruft den CAccessTokenBesitz des Zugriffstokens.

CAccessToken::D isablePrivilege

Rufen Sie diese Methode auf, um eine Berechtigung im CAccessToken Objekt zu deaktivieren.

bool DisablePrivilege(
    LPCTSTR pszPrivilege,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parameter

pszPrivilege
Zeigen Sie auf eine Zeichenfolge, die die Berechtigung zum Deaktivieren im CAccessToken Objekt enthält.

pPreviousState
Zeigen Sie auf ein CTokenPrivileges Objekt, das den vorherigen Status der Berechtigungen enthält.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::D isablePrivileges

Rufen Sie diese Methode auf, um ein oder mehrere Berechtigungen im CAccessToken Objekt zu deaktivieren.

bool DisablePrivileges(
    const CAtlArray<LPCTSTR>& rPrivileges,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parameter

rPrivileges
Zeigen Sie auf ein Array von Zeichenfolgen, die die Berechtigungen zum Deaktivieren im CAccessToken Objekt enthalten.

pPreviousState
Zeigen Sie auf ein CTokenPrivileges Objekt, das den vorherigen Status der Berechtigungen enthält.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::EnablePrivilege

Rufen Sie diese Methode auf, um ein Privileg im CAccessToken Objekt zu aktivieren.

bool EnablePrivilege(
    LPCTSTR pszPrivilege,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parameter

pszPrivilege
Zeigen Sie auf eine Zeichenfolge, die die Im Objekt zu aktivierenden CAccessToken Berechtigungen enthält.

pPreviousState
Zeigen Sie auf ein CTokenPrivileges Objekt, das den vorherigen Status der Berechtigungen enthält.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::EnablePrivileges

Rufen Sie diese Methode auf, um ein oder mehrere Berechtigungen im CAccessToken Objekt zu aktivieren.

bool EnablePrivileges(
    const CAtlArray<LPCTSTR>& rPrivileges,
    CTokenPrivileges* pPreviousState = NULL) throw(...);

Parameter

rPrivileges
Zeigen Sie auf ein Array von Zeichenfolgen, die die Berechtigungen enthalten, die CAccessToken im Objekt aktiviert werden sollen.

pPreviousState
Zeigen Sie auf ein CTokenPrivileges Objekt, das den vorherigen Status der Berechtigungen enthält.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetDefaultDacl

Rufen Sie diese Methode auf, um die standardmäßige DACL des CAccessToken Objekts zurückzugeben.

bool GetDefaultDacl(CDacl* pDacl) const throw(...);

Parameter

pDacl
Zeiger auf das CDacl Class-Objekt , das die Standardmäßig-DACL des CAccessToken Objekts empfängt.

Rückgabewert

Gibt TRUE zurück, wenn die standardmäßige DACL wiederhergestellt wurde, andernfalls FALSE.

CAccessToken::GetEffectiveToken

Rufen Sie diese Methode auf, um das Objekt abzurufen, das CAccessToken dem Zugriffstoken entspricht, das für den aktuellen Thread wirksam ist.

bool GetEffectiveToken(DWORD dwDesiredAccess) throw();

Parameter

dwDesiredAccess
Gibt eine Zugriffsmaske an, die die angeforderten Zugriffstypen für den Zugriff auf das Zugriffstoken identifiziert. Diese angeforderten Zugriffstypen werden mit der DACL des Tokens verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetGroups

Rufen Sie diese Methode auf, um die Tokengruppen des CAccessToken Objekts zurückzugeben.

bool GetGroups(CTokenGroups* pGroups) const throw(...);

Parameter

pGroups
Zeiger auf das CTokenGroups Class-Objekt , das die Gruppeninformationen empfängt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetHandle

Rufen Sie diese Methode auf, um ein Handle für das Zugriffstoken abzurufen.

HANDLE GetHandle() const throw();

Rückgabewert

Gibt ein Handle an das Zugriffstoken des CAccessToken Objekts zurück.

CAccessToken::GetImpersonationLevel

Rufen Sie diese Methode auf, um die Identitätswechselebene aus dem Zugriffstoken abzurufen.

bool GetImpersonationLevel(
    SECURITY_IMPERSONATION_LEVEL* pImpersonationLevel) const throw(...);

Parameter

pImpersonationLevel
Zeigen Sie auf einen SECURITY_IMPERSONATION_LEVEL Enumerationstyp, der informationen zur Identitätswechselebene empfängt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetLogonSessionId

Rufen Sie diese Methode auf, um die dem Objekt zugeordnete CAccessToken Anmeldesitzungs-ID abzurufen.

bool GetLogonSessionId(LUID* pluid) const throw(...);

Parameter

pluid
Zeigen Sie auf eine LUID , die die Anmeldesitzungs-ID empfängt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

In Debugbuilds tritt ein Assertionsfehler auf, wenn pluid ein ungültiger Wert ist.

CAccessToken::GetLogonSid

Rufen Sie diese Methode auf, um die dem Objekt zugeordnete CAccessToken Anmelde-SID abzurufen.

bool GetLogonSid(CSid* pSid) const throw(...);

Parameter

pSid
Zeiger auf ein CSid Class-Objekt .

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

In Debugbuilds tritt ein Assertionsfehler auf, wenn pSid ein ungültiger Wert ist.

CAccessToken::GetOwner

Rufen Sie diese Methode auf, um den besitzer abzurufen, der dem CAccessToken Objekt zugeordnet ist.

bool GetOwner(CSid* pSid) const throw(...);

Parameter

pSid
Zeiger auf ein CSid Class-Objekt .

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Der Besitzer wird standardmäßig für alle Objekte festgelegt, die erstellt wurden, während dieses Zugriffstoken wirksam ist.

CAccessToken::GetPrimaryGroup

Rufen Sie diese Methode auf, um die primäre Gruppe abzurufen, die dem CAccessToken Objekt zugeordnet ist.

bool GetPrimaryGroup(CSid* pSid) const throw(...);

Parameter

pSid
Zeiger auf ein CSid Class-Objekt .

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die Gruppe wird standardmäßig für alle Objekte festgelegt, die erstellt wurden, während dieses Zugriffstoken wirksam ist.

CAccessToken::GetPrivileges

Rufen Sie diese Methode auf, um die berechtigungen abzurufen, die dem CAccessToken Objekt zugeordnet sind.

bool GetPrivileges(CTokenPrivileges* pPrivileges) const throw(...);

Parameter

pPrivileges
Zeiger auf ein CTokenPrivileges Class-Objekt , das die Berechtigungen erhält.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetProcessToken

Rufen Sie diese Methode auf, um CAccessToken mit dem Zugriffstoken aus einem Prozess zu initialisieren.

bool GetProcessToken(DWORD dwDesiredAccess, HANDLE hProcess = NULL) throw();

Parameter

dwDesiredAccess
Gibt eine Zugriffsmaske an, die die angeforderten Zugriffstypen für den Zugriff auf das Zugriffstoken identifiziert. Diese angeforderten Zugriffstypen werden mit der DACL des Tokens verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

hProcess
Handle an den Prozess, dessen Zugriffstoken geöffnet ist. Wenn der Standardwert von NULL verwendet wird, wird der aktuelle Prozess verwendet.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Ruft die OpenProcessToken Win32-Funktion auf.

CAccessToken::GetProfile

Rufen Sie diese Methode auf, um das Handle abzurufen, das auf das Benutzerprofil verweist, das dem CAccessToken Objekt zugeordnet ist.

HANDLE GetProfile() const throw();

Rückgabewert

Gibt ein Handle zurück, das auf das Benutzerprofil zeigt, oder NULL, wenn kein Profil vorhanden ist.

CAccessToken::GetSource

Rufen Sie diese Methode auf, um die Quelle des CAccessToken Objekts abzurufen.

bool GetSource(TOKEN_SOURCE* pSource) const throw(...);

Parameter

pSource
Zeiger auf eine TOKEN_SOURCE Struktur.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetStatistics

Rufen Sie diese Methode auf, um Informationen abzurufen, die dem CAccessToken Objekt zugeordnet sind.

bool GetStatistics(TOKEN_STATISTICS* pStatistics) const throw(...);

Parameter

pStatistics
Zeiger auf eine TOKEN_STATISTICS Struktur.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetTerminalServicesSessionId

Rufen Sie diese Methode auf, um die Sitzungs-ID der Terminaldienste abzurufen, die dem CAccessToken Objekt zugeordnet ist.

bool GetTerminalServicesSessionId(DWORD* pdwSessionId) const throw(...);

Parameter

pdwSessionId
Die Sitzungs-ID der Terminaldienste.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetThreadToken

Rufen Sie diese Methode auf, um das CAccessToken Token aus dem angegebenen Thread zu initialisieren.

bool GetThreadToken(
    DWORD dwDesiredAccess,
    HANDLE hThread = NULL,
    bool bOpenAsSelf = true) throw();

Parameter

dwDesiredAccess
Gibt eine Zugriffsmaske an, die die angeforderten Zugriffstypen für den Zugriff auf das Zugriffstoken identifiziert. Diese angeforderten Zugriffstypen werden mit der DACL des Tokens verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

hThread
Behandeln Sie den Thread, dessen Zugriffstoken geöffnet wird.

bOpenAsSelf
Gibt an, ob die Zugriffsüberprüfung für den Sicherheitskontext des Threads, der die GetThreadToken Methode aufruft, oder für den Sicherheitskontext des Prozesses für den aufrufenden Thread vorgenommen werden soll.

Wenn dieser Parameter FALSE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts für den aufrufenden Thread ausgeführt. Wenn der Thread die Identität eines Clients angibt, kann dieser Sicherheitskontext der eines Clientprozesses sein. Wenn dieser Parameter TRUE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts des Prozesses für den aufrufenden Thread vorgenommen.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetTokenId

Rufen Sie diese Methode auf, um die dem Objekt zugeordnete CAccessToken Token-ID abzurufen.

bool GetTokenId(LUID* pluid) const throw(...);

Parameter

pluid
Zeiger auf eine LUID , die die Token-ID empfängt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::GetType

Rufen Sie diese Methode auf, um den Tokentyp des CAccessToken Objekts abzurufen.

bool GetType(TOKEN_TYPE* pType) const throw(...);

Parameter

pType
Adresse der TOKEN_TYPE Variablen, die bei Erfolg den Typ des Tokens empfängt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Der TOKEN_TYPE Enumerationstyp enthält Werte, die zwischen einem primären Token und einem Identitätswechseltoken unterscheiden.

CAccessToken::GetUser

Rufen Sie diese Methode auf, um den benutzer zu identifizieren, der dem CAccessToken Objekt zugeordnet ist.

bool GetUser(CSid* pSid) const throw(...);

Parameter

pSid
Zeiger auf ein CSid Class-Objekt .

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

CAccessToken::HKeyCurrentUser

Rufen Sie diese Methode auf, um das Handle abzurufen, das auf das Benutzerprofil verweist, das dem CAccessToken Objekt zugeordnet ist.

HKEY HKeyCurrentUser() const throw();

Rückgabewert

Gibt ein Handle zurück, das auf das Benutzerprofil zeigt, oder NULL, wenn kein Profil vorhanden ist.

CAccessToken::Identitätswechsel

Rufen Sie diese Methode auf, um einem Thread einen Identitätswechsel CAccessToken zuzuweisen.

bool Impersonate(HANDLE hThread = NULL) const throw(...);

Parameter

hThread
Behandeln Sie den Thread, um das Identitätswechseltoken zuzuweisen. Dieses Handle muss mit TOKEN_IMPERSONATE Zugriffsrechten geöffnet worden sein. Wenn hThread NULL ist, bewirkt die Methode, dass der Thread die Verwendung eines Identitätswechseltokens beendet.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

In Debugbuilds tritt ein Assertionsfehler auf, wenn CAccessToken kein gültiger Zeiger auf ein Token vorhanden ist.

Die CAutoRevertImpersonation-Klasse kann verwendet werden, um identitätswechselnde Zugriffstoken automatisch wiederhergestellt zu werden.

CAccessToken::ImpersonateLoggedOnUser

Rufen Sie diese Methode auf, damit der aufrufende Thread den Sicherheitskontext eines angemeldeten Benutzers annehmen kann.

bool ImpersonateLoggedOnUser() const throw(...);

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Wichtig

Wenn ein Aufruf einer Identitätswechselfunktion aus irgendeinem Grund fehlschlägt, wird der Client nicht als Identitätswechsel bezeichnet, und die Clientanforderung wird im Sicherheitskontext des Prozesses ausgeführt, aus dem der Aufruf ausgeführt wurde. Wenn der Prozess als Konto mit hohem Privilegierten oder als Mitglied einer administrativen Gruppe ausgeführt wird, kann der Benutzer möglicherweise Aktionen ausführen, die er andernfalls nicht zulassen würde. Daher sollte der Rückgabewert für diese Funktion immer bestätigt werden.

CAccessToken::IsTokenRestricted

Rufen Sie diese Methode auf, um zu testen, ob das CAccessToken Objekt eine Liste eingeschränkter SIDs enthält.

bool IsTokenRestricted() const throw();

Rückgabewert

Gibt TRUE zurück, wenn das Objekt eine Liste der einschränkenden SIDs enthält, FALSE, wenn keine einschränkenden SIDs vorhanden sind oder wenn die Methode fehlschlägt.

CAccessToken::LoadUserProfile

Rufen Sie diese Methode auf, um das dem Objekt zugeordnete CAccessToken Benutzerprofil zu laden.

bool LoadUserProfile() throw(...);

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Bei Debugbuilds tritt ein Assertionsfehler auf, wenn das CAccessToken Token kein gültiges Token enthält oder ein Benutzerprofil bereits vorhanden ist.

CAccessToken::LogonUser

Rufen Sie diese Methode auf, um eine Anmeldesitzung für den Benutzer zu erstellen, der den angegebenen Anmeldeinformationen zugeordnet ist.

bool LogonUser(
    LPCTSTR pszUserName,
    LPCTSTR pszDomain,
    LPCTSTR pszPassword,
    DWORD dwLogonType = LOGON32_LOGON_INTERACTIVE,
    DWORD dwLogonProvider = LOGON32_PROVIDER_DEFAULT) throw();

Parameter

pszUserName
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den Benutzernamen angibt. Dies ist der Name des Benutzerkontos, bei dem sich anmelden soll.

pszDomain
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die den Namen der Domäne oder des Servers angibt, deren Kontodatenbank das pszUserName-Konto enthält.

pszPassword
Zeigen Sie auf eine mit Null beendete Zeichenfolge, die das Klartextkennwort für das von pszUserName angegebene Benutzerkonto angibt.

dwLogonType
Gibt den Typ des auszuführenden Anmeldevorgangs an. Weitere Informationen finden Sie unter "LogonUser ".

dwLogonProvider
Gibt den Anmeldeanbieter an. Weitere Informationen finden Sie unter "LogonUser ".

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Das Zugriffstoken, das sich aus der Anmeldung ergibt, wird dem CAccessTokenzugeordnet. Damit diese Methode erfolgreich ist, muss das CAccessToken Objekt SE_TCB_NAME Berechtigungen enthalten und den Halter als Teil der vertrauenswürdigen Computerbasis identifizieren. Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter "LogonUser ".

CAccessToken::OpenCOMClientToken

Rufen Sie diese Methode von einem COM-Server auf, der einen Aufruf eines Clients verarbeitet, um das CAccessToken Zugriffstoken vom COM-Client zu initialisieren.

bool OpenCOMClientToken(
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parameter

dwDesiredAccess
Gibt eine Zugriffsmaske an, die die angeforderten Zugriffstypen für den Zugriff auf das Zugriffstoken identifiziert. Diese angeforderten Zugriffstypen werden mit der DACL des Tokens verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

bImpersonate
Wenn TRUE, wird der aktuelle Thread die Identität des aufrufenden COM-Clients annehmen, wenn dieser Aufruf erfolgreich abgeschlossen ist. Wenn FALSE, wird das Zugriffstoken geöffnet, der Thread verfügt jedoch nicht über ein Identitätswechseltoken, wenn dieser Aufruf abgeschlossen ist.

bOpenAsSelf
Gibt an, ob die Zugriffsüberprüfung für den Sicherheitskontext des Threads ausgeführt werden soll, der die GetThreadToken-Methode aufruft, oder anhand des Sicherheitskontexts des Prozesses für den aufrufenden Thread.

Wenn dieser Parameter FALSE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts für den aufrufenden Thread ausgeführt. Wenn der Thread die Identität eines Clients angibt, kann dieser Sicherheitskontext der eines Clientprozesses sein. Wenn dieser Parameter TRUE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts des Prozesses für den aufrufenden Thread vorgenommen.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die CAutoRevertImpersonation-Klasse kann verwendet werden, um automatisch identitätswechselnde Zugriffstoken zurückzugeben, die durch Festlegen des bImpersonate-Flags auf TRUE erstellt wurden.

CAccessToken::OpenNamedPipeClientToken

Rufen Sie diese Methode von einem Server auf, der Anforderungen über eine benannte Pipe übernimmt, um das CAccessToken Zugriffstoken vom Client zu initialisieren.

bool OpenNamedPipeClientToken(
    HANDLE hPipe,
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parameter

hPipe
Handle zu einer benannten Pipe.

dwDesiredAccess
Gibt eine Zugriffsmaske an, die die angeforderten Zugriffstypen für den Zugriff auf das Zugriffstoken identifiziert. Diese angeforderten Zugriffstypen werden mit der DACL des Tokens verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

bImpersonate
Wenn TRUE, wird der aktuelle Thread den Anrufpipelineclient annehmen, wenn dieser Aufruf erfolgreich abgeschlossen wurde. Wenn FALSE, wird das Zugriffstoken geöffnet, der Thread verfügt jedoch nicht über ein Identitätswechseltoken, wenn dieser Aufruf abgeschlossen ist.

bOpenAsSelf
Gibt an, ob die Zugriffsüberprüfung für den Sicherheitskontext des Threads ausgeführt werden soll, der die GetThreadToken-Methode aufruft, oder anhand des Sicherheitskontexts des Prozesses für den aufrufenden Thread.

Wenn dieser Parameter FALSE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts für den aufrufenden Thread ausgeführt. Wenn der Thread die Identität eines Clients angibt, kann dieser Sicherheitskontext der eines Clientprozesses sein. Wenn dieser Parameter TRUE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts des Prozesses für den aufrufenden Thread vorgenommen.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die CAutoRevertImpersonation-Klasse kann verwendet werden, um automatisch identitätswechselnde Zugriffstoken zurückzugeben, die durch Festlegen des bImpersonate-Flags auf TRUE erstellt wurden.

CAccessToken::OpenRPCClientToken

Rufen Sie diese Methode von einem Server auf, der einen Aufruf eines RPC-Clients verarbeitet, um das CAccessToken Zugriffstoken vom Client zu initialisieren.

bool OpenRPCClientToken(
    RPC_BINDING_HANDLE BindingHandle,
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true) throw(...);

Parameter

BindingHandle
Bindungshandle auf dem Server, das eine Bindung an einen Client darstellt.

dwDesiredAccess
Gibt eine Zugriffsmaske an, die die angeforderten Zugriffstypen für den Zugriff auf das Zugriffstoken identifiziert. Diese angeforderten Zugriffstypen werden mit der DACL des Tokens verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

bImpersonate
Wenn TRUE, wird der aktuelle Thread die Identität des aufrufenden RPC-Clients annehmen, wenn dieser Aufruf erfolgreich abgeschlossen ist. Wenn FALSE, wird das Zugriffstoken geöffnet, der Thread verfügt jedoch nicht über ein Identitätswechseltoken, wenn dieser Aufruf abgeschlossen ist.

bOpenAsSelf
Gibt an, ob die Zugriffsüberprüfung für den Sicherheitskontext des Threads ausgeführt werden soll, der die GetThreadToken-Methode aufruft, oder anhand des Sicherheitskontexts des Prozesses für den aufrufenden Thread.

Wenn dieser Parameter FALSE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts für den aufrufenden Thread ausgeführt. Wenn der Thread die Identität eines Clients angibt, kann dieser Sicherheitskontext der eines Clientprozesses sein. Wenn dieser Parameter TRUE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts des Prozesses für den aufrufenden Thread vorgenommen.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die CAutoRevertImpersonation-Klasse kann verwendet werden, um automatisch identitätswechselnde Zugriffstoken zurückzugeben, die durch Festlegen des bImpersonate-Flags auf TRUE erstellt wurden.

CAccessToken::OpenThreadToken

Rufen Sie diese Methode auf, um die Identitätswechselebene festzulegen und dann das CAccessToken Token aus dem angegebenen Thread zu initialisieren.

bool OpenThreadToken(
    DWORD dwDesiredAccess,
    bool bImpersonate = false,
    bool bOpenAsSelf = true,
    SECURITY_IMPERSONATION_LEVEL sil = SecurityImpersonation) throw(...);

Parameter

dwDesiredAccess
Gibt eine Zugriffsmaske an, die die angeforderten Zugriffstypen für den Zugriff auf das Zugriffstoken identifiziert. Diese angeforderten Zugriffstypen werden mit der DACL des Tokens verglichen, um zu bestimmen, welche Zugriffe gewährt oder verweigert werden.

bImpersonate
Wenn TRUE, wird der Thread nach Abschluss dieser Methode auf der angeforderten Identitätswechselebene verbleiben. Wenn FALSE, wird der Thread auf die ursprüngliche Identitätswechselebene zurückgesetzt.

bOpenAsSelf
Gibt an, ob die Zugriffsüberprüfung für den Sicherheitskontext des Threads ausgeführt werden soll, der die GetThreadToken-Methode aufruft, oder anhand des Sicherheitskontexts des Prozesses für den aufrufenden Thread.

Wenn dieser Parameter FALSE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts für den aufrufenden Thread ausgeführt. Wenn der Thread die Identität eines Clients angibt, kann dieser Sicherheitskontext der eines Clientprozesses sein. Wenn dieser Parameter TRUE ist, wird die Zugriffsüberprüfung mithilfe des Sicherheitskontexts des Prozesses für den aufrufenden Thread vorgenommen.

sil
Gibt einen SECURITY_IMPERSONATION_LEVEL aufgezählten Typ an, der die Identitätswechselebene des Tokens bereitstellt.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

OpenThreadTokenähnelt CAccessToken::GetThreadToken, legt jedoch die Identitätswechselebene fest, bevor das CAccessToken Zugriffstoken des Threads initialisiert wird.

Die CAutoRevertImpersonation-Klasse kann verwendet werden, um automatisch identitätswechselnde Zugriffstoken zurückzugeben, die durch Festlegen des bImpersonate-Flags auf TRUE erstellt wurden.

CAccessToken::P rivilegeCheck

Rufen Sie diese Methode auf, um zu bestimmen, ob eine bestimmte Gruppe von Berechtigungen im CAccessToken Objekt aktiviert ist.

bool PrivilegeCheck(
    PPRIVILEGE_SET RequiredPrivileges,
    bool* pbResult) const throw();

Parameter

RequiredPrivileges
Zeiger auf eine PRIVILEGE_SET Struktur.

pbResult
Zeigen Sie auf einen Wert, den die Methode festlegt, um anzugeben, ob eine oder alle angegebenen Berechtigungen im CAccessToken Objekt aktiviert sind.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Bei PrivilegeCheck Rückgabe wird das Attributes Element jeder LUID_AND_ATTRIBUTES Struktur auf SE_PRIVILEGE_USED_FOR_ACCESS festgelegt, wenn die entsprechenden Berechtigungen aktiviert sind. Diese Methode ruft die PrivilegeCheck Win32-Funktion auf.

CAccessToken::Revert

Rufen Sie diese Methode auf, um zu verhindern, dass ein Thread ein Identitätswechseltoken verwendet.

bool Revert(HANDLE hThread = NULL) const throw();

Parameter

hThread
Behandeln Sie den Thread, um den Identitätswechsel rückgängig zu machen. Wenn hThread NULL ist, wird der aktuelle Thread angenommen.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die Umversion von Identitätswechseltoken kann automatisch mit der CAutoRevertImpersonation-Klasse ausgeführt werden.

CAccessToken::SetDefaultDacl

Rufen Sie diese Methode auf, um die standardmäßige DACL des CAccessToken Objekts festzulegen.

bool SetDefaultDacl(const CDacl& rDacl) throw(...);

Parameter

rDacl
Die neuen CDacl-Standardklasseninformationen.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die Standardmäßige DACL ist die DACL, die standardmäßig verwendet wird, wenn neue Objekte mit diesem Zugriffstoken erstellt werden.

CAccessToken::SetOwner

Rufen Sie diese Methode auf, um den Besitzer des CAccessToken Objekts festzulegen.

bool SetOwner(const CSid& rSid) throw(...);

Parameter

rSid
Das CSid Class-Objekt , das die Besitzerinformationen enthält.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Der Besitzer ist der Standardbesitzer, der für neue Objekte verwendet wird, die erstellt wurden, während dieses Zugriffstoken wirksam ist.

CAccessToken::SetPrimaryGroup

Rufen Sie diese Methode auf, um die primäre Gruppe des CAccessToken Objekts festzulegen.

bool SetPrimaryGroup(const CSid& rSid) throw(...);

Parameter

rSid
Das CSid Class-Objekt , das die primären Gruppeninformationen enthält.

Rückgabewert

Gibt WAHR für Erfolg, FALSE bei Fehler zurück.

Hinweise

Die primäre Gruppe ist die Standardgruppe für neue Objekte, die erstellt wurden, während dieses Zugriffstoken wirksam ist.

Siehe auch

ATLSecurity-Beispiel
Zugriffstoken
Klassenübersicht