IADsAccessControlEntry-Eigenschaftenmethoden
Die Eigenschaftenmethoden der IADsAccessControlEntry-Schnittstelle erhalten oder legen die in der folgenden Tabelle beschriebenen Eigenschaften fest. Weitere Informationen finden Sie unter Schnittstelleneigenschaftsmethoden.
Eigenschaften
-
Accessmask
-
-
Zugriffstyp: Lesen/Schreiben
-
Skriptdatentyp: LONG
-
// C++ method syntax HRESULT get_AccessMask( [out] LONG* plnAccessMask ); HRESULT put_AccessMask( [in] LONG lnAccessMask );
Enthält einen Satz von Flags, der Zugriffsberechtigungen für das -Objekt angibt. Gültige Werte für Active Directory-Objekte werden in der ADS _ RIGHTS _ ENUM-Enumeration definiert.
Weitere Informationen und eine Liste möglicher Werte für Datei- oder Dateifreigabeobjekte finden Sie unter Dateisicherheit und Zugriffsrechte.
Weitere Informationen und eine Liste möglicher Werte für Registrierungsobjekte finden Sie unter Sicherheit und Zugriffsrechte für Registrierungsschlüssel.
-
-
AceFlags
-
-
Zugriffstyp: Lesen/Schreiben
-
Skriptdatentyp: LONG
-
// C++ method syntax HRESULT get_AceFlags( [out] LONG* plnAceFlags ); HRESULT put_AceFlags( [in] LONG lnAceFlags );
Enthält einen Satz von Flags, der angibt, ob andere Container oder Objekte den ACE erben können. Gültige Werte für das Active Directory-Objekt werden in der ADS _ ACEFLAG _ ENUM-Enumeration definiert.
Weitere Informationen und mögliche Werte für Datei-, Dateifreigabe- und Registrierungsobjekte finden Sie unter dem AceFlags-Member der ACE _ HEADER-Struktur.
-
-
AceType
-
-
Zugriffstyp: Lesen/Schreiben
-
Skriptdatentyp: LONG
-
// C++ method syntax HRESULT get_AceType( [out] LONG* plAceType ); HRESULT put_AceType( [in] LONG lnAceType );
Enthält einen Wert, der den Typ des ACE angibt. Gültige Werte für Active Directory-Objekte werden in der ADS _ ACETYPE _ ENUM-Enumeration definiert.
Weitere Informationen und mögliche Werte für Datei-, Dateifreigabe- und Registrierungsobjekte finden Sie unter dem AceType-Member der ACE _ HEADER-Struktur.
-
-
Flags
-
-
Zugriffstyp: Lesen/Schreiben
-
Skriptdatentyp: LONG
-
// C++ method syntax HRESULT get_Flags( [out] LONG* lnflags ); HRESULT put_Flags( [in] LONG lnflags );
Ein Flag, das angibt, ob der ACE über einen Objekttyp oder einen geerbten Objekttyp verfügt. Gültige Flags werden in der ADS _ FLAGTYPE _ ENUM-Enumeration definiert.
-
-
Inheritedobjecttype
-
-
Zugriffstyp: Lesen/Schreiben
-
Skriptdatentyp: BSTR
-
// C++ method syntax HRESULT get_InheritedObjectType( [out] BSTR* bstrInheritedObjectType ); HRESULT put_InheritedObjectType( [in] BSTR bstrInheritedObjectType );
Ein Flag, das den Typ eines untergeordneten Objekts eines ADSI-Objekts angibt. Der Wert ist eine GUID für ein Objekt im Zeichenfolgenformat. Wenn eine solche GUID festgelegt ist, gilt der ACE nur für das Objekt, auf das die GUID verwiesen wird.
-
-
ObjectType
-
-
Zugriffstyp: Lesen/Schreiben
-
Skriptdatentyp: BSTR
-
// C++ method syntax HRESULT get_ObjectType( [out] BSTR* bstrObjectType ); HRESULT put_ObjectType( [in] BSTR bstrObjectType );
Ein Flag, das den ADSI-Objekttyp angibt. Der Wert ist eine GUID für eine Eigenschaft oder ein Objekt im Zeichenfolgenformat. Die GUID bezieht sich auf eine Eigenschaft, wenn ADS RIGHT _ _ DS READ _ _ PROP- und ADS RIGHT _ _ DS WRITE _ PROP-Zugriffsmasken _ verwendet werden. Die GUID gibt ein Objekt an, wenn ADS RIGHT _ _ DS CREATE _ _ CHILD- und ADS RIGHT _ _ DS DELETE _ CHILD-Zugriffsmasken _ verwendet werden.
-
-
Treuhänder
-
-
Zugriffstyp: Lesen/Schreiben
-
Skriptdatentyp: BSTR
-
// C++ method syntax HRESULT get_Trustee( [out] BSTR* pbstrSecurityId ); HRESULT put_Trustee( [in] BSTR bstrSecurityId );
Enthält den Namen des Kontos, für das der ACE gilt.
-
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Einträge zu einer abhängige ACL mithilfe der IADsAccessControlEntry-Eigenschaftenmethoden hinzugefügt werden.
Dim x As IADs
Dim sd As IADsSecurityDescriptor
Dim ace As IADsAccessControlEntry
Dim Dacl As IADsAccessControlList
Dim Ace1 As New AccessControlEntry
Dim Ace2 As New AccessControlEntry
On Error GoTo Cleanup
Set x = GetObject("LDAP://OU=Sales, DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Set Dacl = sd.DiscretionaryAcl
' Show the existing ACEs.
For Each ace In Dacl
Debug.Print ace.Trustee
Next
' Setup the first ACE.
Ace1.AccessMask = -1 'Full Permission (Allowed)
Ace1.AceType = ADS_ACETYPE_ACCESS_ALLOWED
Ace1.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace1.Trustee = "ACTIVED\Administrator"
' Setup the 2nd ACE.
Ace2.AccessMask = -1 'Full Permission (Denied)
Ace2.AceType = ADS_ACETYPE_ACCESS_DENIED
Ace2.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace2.Trustee = "ACTIVED\Andyhar"
' Add the ACEs to the Discretionary ACL.
Dacl.AddAce Ace1
Dacl.AddAce Ace2
sd.DiscretionaryAcl = Dacl
x.Put "ntSecurityDescriptor", Array(sd)
x.SetInfo
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set x = Nothing
Set sd = Nothing
Set ace = Nothing
Set Dacl = Nothing
Set Ace1 = Nothing
Set Ace2 = Nothing
Set obj = Nothing
Set cls = Nothing
Im folgenden Codebeispiel werden Zugriffssteuerungseinträge angezeigt.
IADs *pADs = NULL;
IDispatch *pDisp = NULL;
IADsSecurityDescriptor *pSD = NULL;
VARIANT var;
HRESULT hr = S_OK;
VariantInit(&var);
hr = ADsOpenObject(L"LDAP://OU=Sales, DC=Fabrikam,DC=com",NULL,NULL,
ADS_SECURE_AUTHENTICATION, IID_IADs,(void**)&pADs);
if(FAILED(hr)) {goto Cleanup;}
hr = pADs->Get(CComBSTR("ntSecurityDescriptor"),&var);
if(FAILED(hr)) {goto Cleanup;}
pDisp = V_DISPATCH(&var);
hr = pDisp->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
if(FAILED(hr)) {goto Cleanup;}
pDisp->Release();
pSD->get_DiscretionaryAcl(&pDisp);
hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
if(FAILED(hr)) {goto Cleanup;}
hr = DisplayAccessInfo(pSD);
if(FAILED(hr)) {goto Cleanup;}
VariantClear(&var);
Cleanup:
if(pADs) pADs->Release();
if(pDisp) pDisp->Release();
if(pSD) pSD->Release();
return hr;
HRESULT DisplayAccessInfo(IADsSecurityDescriptor *pSD)
{
LPWSTR lpszFunction = L"DisplayAccessInfo";
IDispatch *pDisp = NULL;
IADsAccessControlList *pACL = NULL;
IADsAccessControlEntry *pACE = NULL;
IEnumVARIANT *pEnum = NULL;
IUnknown *pUnk = NULL;
HRESULT hr = S_OK;
ULONG nFetch = 0;
BSTR bstrValue = NULL;
VARIANT var;
LPWSTR lpszOutput = NULL;
LPWSTR lpszMask = NULL;
size_t nLength = 0;
VariantInit(&var);
hr = pSD->get_DiscretionaryAcl(&pDisp);
if(FAILED(hr)){goto Cleanup;}
hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
if(FAILED(hr)){goto Cleanup;}
hr = pACL->get__NewEnum(&pUnk);
if(FAILED(hr)){goto Cleanup;}
hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
if(FAILED(hr)){goto Cleanup;}
hr = pEnum->Next(1,&var,&nFetch);
while(hr == S_OK)
{
if(nFetch==1)
{
if(VT_DISPATCH != V_VT(&var))
{
goto Cleanup;
}
pDisp = V_DISPATCH(&var);
hr = pDisp->QueryInterface(IID_IADsAccessControlEntry,(void**)&pACE);
if(SUCCEEDED(hr))
{
lpszMask = L"Trustee: %s";
hr = pACE->get_Trustee(&bstrValue);
nLength = wcslen(lpszMask) + wcslen(bstrValue) + 1;
lpszOutput = new WCHAR[nLength];
swprintf_s(lpszOutput,lpszMask,bstrValue);
printf(lpszOutput);
delete [] lpszOutput;
SysFreeString(bstrValue);
pACE->Release();
pACE = NULL;
pDisp->Release();
pDisp = NULL;
}
VariantClear(&var);
}
hr = pEnum->Next(1,&var,&nFetch);
}
Cleanup:
if(pDisp) pDisp->Release();
if(pACL) pACL->Release();
if(pACE) pACE->Release();
if(pEnum) pEnum->Release();
if(pUnk) pUnk->Release();
if(szValue) SysFreeString(szValue);
return hr;
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
Windows Vista |
| Unterstützte Mindestversion (Server) |
Windows Server 2008 |
| Header |
|
| DLL |
|
| IID |
IID _ IADsAccessControlEntry ist als B4F3A14C-9BDD-11D0-852C-00C04FD8D503 definiert. |