Metode Properti IADsAccessControlEntry
Metode properti antarmuka IADsAccessControlEntry mendapatkan atau mengatur properti yang dijelaskan dalam tabel berikut. Untuk informasi selengkapnya, lihat Metode Properti Antarmuka.
Properti
-
AccessMask
-
-
Jenis akses: Baca/tulis
-
Jenis data pembuatan skrip: LONG
-
// C++ method syntax HRESULT get_AccessMask( [out] LONG* plnAccessMask ); HRESULT put_AccessMask( [in] LONG lnAccessMask );
Berisi sekumpulan bendera yang menentukan hak akses untuk objek. Nilai yang valid untuk objek Direktori Aktif ditentukan dalam enumerasi ADS_RIGHTS_ENUM .
Untuk informasi selengkapnya dan daftar nilai yang mungkin untuk objek berbagi file atau file, lihat Keamanan File dan Hak Akses.
Untuk informasi selengkapnya dan daftar nilai yang mungkin untuk objek registri, lihat Keamanan Kunci Registri dan Hak Akses.
-
-
AceFlags
-
-
Jenis akses: Baca/tulis
-
Jenis data pembuatan skrip: LONG
-
// C++ method syntax HRESULT get_AceFlags( [out] LONG* plnAceFlags ); HRESULT put_AceFlags( [in] LONG lnAceFlags );
Berisi sekumpulan bendera yang menentukan apakah kontainer atau objek lain dapat mewarisi ACE. Nilai yang valid untuk objek Direktori Aktif ditentukan dalam enumerasi ADS_ACEFLAG_ENUM .
Untuk informasi selengkapnya dan nilai yang mungkin untuk file, berbagi file, dan objek registri, lihat anggota AceFlags dari struktur ACE_HEADER .
-
-
AceType
-
-
Jenis akses: Baca/tulis
-
Jenis data pembuatan skrip: LONG
-
// C++ method syntax HRESULT get_AceType( [out] LONG* plAceType ); HRESULT put_AceType( [in] LONG lnAceType );
Berisi nilai yang menunjukkan jenis ACE. Nilai yang valid untuk objek Direktori Aktif ditentukan dalam enumerasi ADS_ACETYPE_ENUM .
Untuk informasi selengkapnya dan nilai yang mungkin untuk file, berbagi file, dan objek registri, lihat anggota AceType dari struktur ACE_HEADER .
-
-
Bendera
-
-
Jenis akses: Baca/tulis
-
Jenis data pembuatan skrip: LONG
-
// C++ method syntax HRESULT get_Flags( [out] LONG* lnflags ); HRESULT put_Flags( [in] LONG lnflags );
Bendera yang menunjukkan apakah ACE memiliki jenis objek atau jenis objek yang diwariskan. Bendera yang valid ditentukan dalam enumerasi ADS_FLAGTYPE_ENUM .
-
-
InheritedObjectType
-
-
Jenis akses: Baca/tulis
-
Jenis data pembuatan skrip: BSTR
-
// C++ method syntax HRESULT get_InheritedObjectType( [out] BSTR* bstrInheritedObjectType ); HRESULT put_InheritedObjectType( [in] BSTR bstrInheritedObjectType );
Bendera yang menunjukkan jenis objek anak dari objek ADSI. Nilainya adalah GUID ke objek dalam format string. Ketika GUID seperti itu diatur, ACE hanya berlaku untuk objek yang dirujuk oleh GUID.
-
-
ObjectType
-
-
Jenis akses: Baca/tulis
-
Jenis data pembuatan skrip: BSTR
-
// C++ method syntax HRESULT get_ObjectType( [out] BSTR* bstrObjectType ); HRESULT put_ObjectType( [in] BSTR bstrObjectType );
Bendera yang menunjukkan jenis objek ADSI. Nilainya adalah GUID ke properti atau objek dalam format string. GUID mengacu pada properti saat masker akses ADS_RIGHT_DS_READ_PROP dan ADS_RIGHT_DS_WRITE_PROP digunakan. GUID menentukan objek saat ADS_RIGHT_DS_CREATE_CHILD dan masker akses ADS_RIGHT_DS_DELETE_CHILD digunakan.
-
-
Wali
-
-
Jenis akses: Baca/tulis
-
Jenis data pembuatan skrip: BSTR
-
// C++ method syntax HRESULT get_Trustee( [out] BSTR* pbstrSecurityId ); HRESULT put_Trustee( [in] BSTR bstrSecurityId );
Berisi nama akun tempat ACE berlaku.
-
Contoh
Contoh kode berikut menunjukkan cara menambahkan entri ke ACL diskresi menggunakan metode properti IADsAccessControlEntry .
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
Contoh kode berikut menampilkan entri kontrol akses.
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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows Vista |
Server minimum yang didukung |
Windows Server 2008 |
Header |
|
DLL |
|
IID |
IID_IADsAccessControlEntry didefinisikan sebagai B4F3A14C-9BDD-11D0-852C-00C04FD8D503 |