Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: jankowalski25
Biblioteki C/C++

AccessCheckByType

[funkcja] Określa, czy deskryptor zabezpieczeń zapewnia dostęp do danego elementu dla klienta.

Składnia

C/C++
#include <windows.h>
BOOL WINAPI AccessCheckByType(
PSECURITY_DESCRIPTOR pSecurityDescriptor,
PSID PrincipalSelfSid,
HANDLE ClientToken,
DWORD DesiredAccess,
POBJECT_TYPE_LIST ObjectTypeList,
DWORD ObjectTypeListLength,
PGENERIC_MAPPING GenericMapping,
PPRIVILEGE_SET PrivilegeSet,
LPDWORD PrivilegeSetLength,
LPDWORD GrantedAccess,
LPBOOL AccessStatus
);

Argumenty

ArgumentOpis
pSecurityDescriptorWskaźnik do struktury » WinAPISECURITY_DESCRIPTOR określającej, jaki typ dostępu jest sprawdzany.
PrincipalSelfSidWskaźnik do identyfikatora zabezpieczeń (SID). Jeśli deskryptor zabezpieczeń jest powiązany z obiektem głównym (na przykład obiektem użytkownika), wartość tego argumentu powinna zawierać SID tego obiektu. Jeśli obiekt nie jest obiektem głównym, to wartość tego argumentu powinna wynosić NULL.
ClientTokenUchwyt do impersonowanego tokenu, który określa klienta uzyskującego dostęp. Uchwyt musi mieć dostęp TOKEN_QUERY, inaczej funkcja zwróci wartość ERROR_ACCESS_DENIED.
DesiredAccessMaska dostępu określająca uprawnienia do sprawdzenia. Taka maska musi być mapowana przez funkcję MapGenericMask, aby nie zawierała żadnych uprawnień. Jeśli wartość tego argumentu wynosi MAXIMUM_ALLOWED, funkcja ustawia maskę dostępu w argumencie GrantedAccess w celu udostępnienia maksymalnych możliwych uprawnień dla klienta.
ObjectTypeListWskaźnik do tablicy struktur OBJECT_TYPE_LIST określających hierarchię okiektów, dla której dostęp jest sprawdzany. Każdy element w tablicy określa GUID zawierający typ obiektu i jego miejsce w hierarchii. Tablica nie powinna zawierać dwóch elementów z tym samym GUID. Tablica musi zawierać przynajmniej jeden element. Pierwszy z nich musi mieć priorytet zero i określać własny obiekt. Tablica może mieć tylko jeden taki element. Drugi element jest subobiektem o priorytecie 1. Każdy element o niższym priorytecie zawiera informacje dotyczące od dwóch do czterech subobiektów. Mimo tego priorytety elementów w tablicy mogą wyglądać następująco: {0,1,2,2,1,2,3}. Jeśli typy obiektów w tablicy występują w niewłaściwej kolejności, funkcja zakończy się niepowodzeniem i ustawi błąd ERROR_INVALID_PARAMETER. Jeśli wartość tego argumentu wynosi NULL, funkcja zadziała tak, jak funkcja AccessCheck.
ObjectTypeListLengthOkreśla liczbę elementów w tablicy wskazywanej przez argument ObjectTypeList.
GenericMappingWskaźnik do struktury GENERIC_MAPPING powiązanej z obiektem, dla którego jest sprawdzany dostęp. Składowa GenericAll tej struktury powinna zawierać wszystkie uprawnienia dostępu, których może wymagać menedżer zasobów, włącznie z STANDARD_RIGHTS_ALL i wszystkimi uprawnieniami określanymi przez składowe GenericRead, GenericWrite oraz GenericExecute.
PrivilegeSetWskaźnik do struktury PRIVILEGE_SET pobierającej przywileje używane do uzyskania dostępu. Jeśli żadne przywileje nie są dostępne, funkcja ustawia wartość składowej PrivilegeCoun na zero.
PrivilegeSetLengthOkreśla rozmiar bufora wskazywanego przez wartość argumentu PrivilegeSet (w bajtach).
GrantedAccessWskaźnik do maski dostępu pobierającej uprawnienia. Jeśli wartość argumentu AccessStatus jest ustawiona na FALSE, funkcja ustawia maskę dostępu na zero. Jeśli funkcja zakończy się niepowodzeniem, to nie ustawia maski dostępu.
AccessStatusWskaźnik do zmiennej pobierającej wynik sprawdzenia dostępu. Jeśli deskryptor zabezpieczeń pozwala na żądanie uprawnień dostępu do klienta określanego przez token dostępu, wartość tego argumentu jest ustawiana na TRUE, w przeciwnym wypadku FALSE i wtedy należy wywołać funkcję » WinAPIGetLastError w celu uzyskania dodatkowych informacji o błędach.

Zwracana wartość

Jeśli funkcja zakończy się bez błędów, zwracana wartość jest niezerowa. Jeśli wystąpią błędy, zwracaną wartością jest zero. Aby uzyskać dodatkowe informacje o błędach, należy wywołać funkcję » WinAPIGetLastError.

Dodatkowe informacje

Funkcja może sprawdzić dostęp klienta do całej hierarchii obiektów. Najczęściej programy serwera używają tej funkcji do sprawdzenia dostępu do prywatnego obiektu. Funkcja porównuje określony deskryptor zabezpieczeń z tokenem dostępu i sprawdza, czy dostęp zostanie przyznany. Tablica zawarta w argumencie ObjectTypeList nie musi określać całego zdefniowanego obiektu. Zazwyczaj określa jego podzbiór, dla którego jest sprawdzany dostęp, na przykład aby sprawdzić dostęp do dwóch elementów z listy, należy przekazać jako argument listę z czterema elementami: przekazywany obiekt z priorytetem zero, ustawienia listy z priorytetem 1 i dwa elementy o priorytecie 2. Funkcja sprawdza ACE, które pasują do tego obiektu i określonych obiektów ACE dla typów obiektów wymienionych w tablicy ObjectTypeList. Funkcja ignoruje obiekty ACE dla typów obiektów, które nie znajdują się w tablicy ObjectTypeList, jednak wyniki zwracane w argumencie AccessStatus powodują przyznanie dostępu do części obiektu definiowanego przez argument ObjectTypeList, a nie przez całego obiektu. Jeśli wartość deskryptora zabezpieczeń DACL wynosi NULL, wartość argumentu AccessStatus wynosi TRUE i powoduje, że klient uzyskuje żądany dostęp. Jeśli deskryptor zabezpieczeń nie zawiera właściciela i grup SID, funkcja kończy się niepowodzeniem i zwraca wartość ERROR_INVALID_SECURITY_DESCR.

Wymagania

Minimalny system klientaWindows XP (tylko aplikacje biurowe).
Minimalny system serweraWindows Server 2003 (tylko aplikacje biurowe).
NagłówekWinBase.h (dołącza Windows.h).
BibliotekaAdvapi32.lib
DLLAdvapi32.dll

Linki zewnętrzne