ADS_SECURITY_INFO_ENUM Enumeration (iads.h)
Die ADS_SECURITY_INFO_ENUM-Enumeration gibt die verfügbaren Optionen zum Untersuchen von Sicherheitsdaten eines Objekts an.
Syntax
typedef enum __MIDL___MIDL_itf_ads_0001_0077_0002 {
ADS_SECURITY_INFO_OWNER = 0x1,
ADS_SECURITY_INFO_GROUP = 0x2,
ADS_SECURITY_INFO_DACL = 0x4,
ADS_SECURITY_INFO_SACL = 0x8
} ADS_SECURITY_INFO_ENUM;
Konstanten
ADS_SECURITY_INFO_OWNER Wert: 0x1 Liest oder legt die Besitzerdaten fest. |
ADS_SECURITY_INFO_GROUP Wert: 0x2 Liest oder legt die Gruppendaten fest. |
ADS_SECURITY_INFO_DACL Wert: 0x4 Liest oder legt die diskretionären Zugriffssteuerungslistendaten fest. |
ADS_SECURITY_INFO_SACL Wert: 0x8 Liest oder legt die Daten der Systemzugriffssteuerungsliste fest. |
Hinweise
Die in dieser Enumeration definierten Optionen sind Bitmasken. Mehrere Optionen können mit entsprechenden bitweisen Vorgängen festgelegt werden.
Um die Sicherheitsdaten für ein Objekt zu lesen, verwenden Sie die IADsObjectOptions-Schnittstelle , und geben Sie die in dieser Enumeration aufgeführten Sicherheitsdatenoptionen an.
In der folgenden Liste werden gängige Flagkombinationen und deren Verwendung aufgeführt.
Flag-Kombination | BESCHREIBUNG |
---|---|
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP und ADS_SECURITY_INFO_DACL | Ermöglichen Sie Benutzern das Lesen der Sicherheitsdaten des Besitzers, der Gruppe oder der DACL eines Objekts. Dies ist die Standardeinstellung, wenn ein Objekt erstellt wird. |
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP, ADS_SECURITY_INFO_DACL und ADS_SECURITY_INFO_SACL | Ermöglichen Sie Benutzern das Lesen der SACL. Das ADS_SECURITY_INFO_SACL-Flag kann nicht selbst verwendet werden. |
Derzeit sind solche Optionen nur für Active Directory verfügbar.
Da Visual Basic Scripting Edition (VBScript) keine Daten aus einer Typbibliothek lesen kann, muss eine Anwendung die entsprechenden numerischen Konstanten anstelle der symbolischen Konstanten verwenden, um die entsprechenden Flags festzulegen. Um die symbolischen Konstanten als gute Programmierpraxis zu verwenden, schreiben Sie explizite Deklarationen dieser Konstanten, wie hier beschrieben.
Beispiele
Im folgenden Codebeispiel wird die Anzahl der Zugriffssteuerungseinträge in einer SACL angezeigt.
Const ADS_SECURITY_INFO_OWNER = &H1
Const ADS_SECURITY_INFO_GROUP = &H2
Const ADS_SECURITY_INFO_DACL = &H4
Const ADS_SECURITY_INFO_SACL = &H8
Const ADS_OPTION_SECURITY_MASK = 3
Dim x As IADs
Dim dso As IADsOpenDSObject
Dim adsPath As String
Dim sd As IADsSecurityDescriptor
Dim sacl As IADsAccessControlList
Dim objOps As IADsObjectOptions
Dim opt As Variant
Dim canReadSacl As Variant
Set dso = GetObject("LDAP:")
adsPath = "LDAP://ArcSrv1/dc=Sales,dc=Fabrikam,dc=com"
Set x = dso.OpenDSObject(adsPath, vbNullString, vbNullString, 1)
Set objOps = x
canReadSacl = ADS_SECURITY_INFO_OWNER _
Or ADS_SECURITY_INFO_GROUP _
Or ADS_SECURITY_INFO_DACL _
Or ADS_SECURITY_INFO_SACL
opt = objOps.GetOption(ADS_OPTION_SECURITY_MASK)
If opt <> canReadSacl Then
objOps.SetOption ADS_OPTION_SECURITY_MASK, canReadSacl
End If
Set sd = x.Get("ntSecurityDescriptor")
Set sacl = sd.SystemAcl
Debug.Print "sacl(aceCount)= " & sacl.AceCount
Im folgenden Codebeispiel wird die Anzahl der Zugriffssteuerungseinträge in einer System-ACL angezeigt. Aus Gründen der Kürze wird die Fehlerüberprüfung weggelassen.
void TestObjectOptions()
{
long lCanReadSACL = ADS_SECURITY_INFO_OWNER |
ADS_SECURITY_INFO_GROUP |
ADS_SECURITY_INFO_DACL |
ADS_SECURITY_INFO_SACL;
HRESULT hr = S_OK;
CComPtr<IADs> spObj;
hr = ADsOpenObject(L"LDAP://arcSrv1/dc=Sales,dc=Fabrikam,dc=com",
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IADs,
(void**)&spObj);
if(S_OK != hr)
{
return;
}
CComPtr<IADsObjectOptions> spObjOps;
hr = spObj->QueryInterface(IID_IADsObjectOptions, (void**)&spObjOps);
if(S_OK != hr)
{
return;
}
CComVariant svar;
hr = spObjOps->GetOption(ADS_OPTION_SECURITY_MASK, &svar);
if(S_OK != hr)
{
return;
}
if(V_I4(&svar) != lCanReadSACL)
{
svar = lCanReadSACL;
hr = spObjOps->SetOption(ADS_OPTION_SECURITY_MASK, svar);
}
hr = spObj->Get(CComBSTR("ntSecurityDescriptor"), &svar);
if(S_OK != hr)
{
return;
}
CComPtr<IADsSecurityDescriptor> spSd;
hr = V_DISPATCH(&svar)->QueryInterface(IID_IADsSecurityDescriptor,
(void**)&spSd);
if(S_OK != hr)
{
return;
}
CComPtr<IDispatch> spDisp;
hr = spSd->get_SystemAcl(&spDisp);
if(S_OK != hr)
{
return;
}
CComPtr<IADsAccessControlList> spSacl;
hr = spDisp->QueryInterface(IID_IADsAccessControlList,
(void**)&spSacl);
if(S_OK != hr)
{
return;
}
LONG lOptions;
hr = spSacl->get_AceCount(&lOptions);
if(S_OK != hr)
{
return;
}
_tprintf(TEXT("Number of ACE's in the SACL is %d\n"), lOptions);
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Kopfzeile | iads.h |