Methoden der IADsAccessControlEntry-Eigenschaft
Die Eigenschaftenmethoden der IADsAccessControlEntry-Schnittstelle rufen die in der folgenden Tabelle beschriebenen Eigenschaften ab oder legen sie fest. Weitere Informationen finden Sie unter Methoden der Schnittstelleneigenschaft.
Eigenschaften
-
Accessmask
-
-
Zugriffstyp: Lese-/Schreibzugriff
-
Skriptdatentyp: LONG
-
// C++ method syntax HRESULT get_AccessMask( [out] LONG* plnAccessMask ); HRESULT put_AccessMask( [in] LONG lnAccessMask );
Enthält eine Reihe von Flags, die 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: Lese-/Schreibzugriff
-
Skriptdatentyp: LONG
-
// C++ method syntax HRESULT get_AceFlags( [out] LONG* plnAceFlags ); HRESULT put_AceFlags( [in] LONG lnAceFlags );
Enthält eine Reihe von Flags, die 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 im AceFlags-Element der ACE_HEADER-Struktur .
-
-
AceType
-
-
Zugriffstyp: Lese-/Schreibzugriff
-
Skriptdatentyp: LONG
-
// C++ method syntax HRESULT get_AceType( [out] LONG* plAceType ); HRESULT put_AceType( [in] LONG lnAceType );
Enthält einen Wert, der den Typ von 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 im AceType-Element der ACE_HEADER-Struktur .
-
-
Flags
-
-
Zugriffstyp: Lese-/Schreibzugriff
-
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 geerbten Objekttyp verfügt. Gültige Flags werden in der ADS_FLAGTYPE_ENUM-Enumeration definiert.
-
-
Inheritedobjecttype
-
-
Zugriffstyp: Lese-/Schreibzugriff
-
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. Sein Wert ist eine GUID für ein Objekt im Zeichenfolgenformat. Wenn eine solche GUID festgelegt ist, gilt die ACE nur für das Objekt, auf das von der GUID verwiesen wird.
-
-
ObjectType
-
-
Zugriffstyp: Lese-/Schreibzugriff
-
Skriptdatentyp: BSTR
-
// C++ method syntax HRESULT get_ObjectType( [out] BSTR* bstrObjectType ); HRESULT put_ObjectType( [in] BSTR bstrObjectType );
Ein Flag, das den ADSI-Objekttyp angibt. Sein Wert ist eine GUID für eine Eigenschaft oder ein Objekt im Zeichenfolgenformat. Die GUID verweist 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: Lese-/Schreibzugriff
-
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 gezeigt, wie Sie einer diskretionären ACL mithilfe der IADsAccessControlEntry-Eigenschaftenmethoden Einträge hinzufügen.
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) |
WindowsServer 2008 |
Header |
|
DLL |
|
IID |
IID_IADsAccessControlEntry ist definiert als B4F3A14C-9BDD-11D0-852C-00C04FD8D503 |