Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esistono diversi tipi di proprietà che vengono utilizzati con gli oggetti directory. Nello schema Servizi di dominio Active Directory questi tipi di proprietà sono chiamati sintassi degli attributi. Per ulteriori informazioni sulle sintassi degli attributi e per un elenco di sintassi utilizzabili in Servizi di dominio Active Directory, vedere l'argomento relativo alle sintassi per gli attributi Active Directory in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkID=27252 (informazioni in lingua inglese).
Negli argomenti seguenti sono riportati esempi di codice che illustrano come leggere e scrivere tipi di proprietà utilizzando System.DirectoryServices:
- Tipo di proprietà Boolean
- Proprietà DateTime
- Tipo di proprietà basato su nome distinto con valore binario
- Tipo di proprietà LargeInteger
- Tipo di proprietà basato su stringhe di ottetti (SID)
- Tipo di proprietà basato su descrittori di protezione
- Tipo di proprietà String
Tipi di dati interpretati
Esistono due modi diversi per recuperare i valori delle proprietà dallo spazio dei nomi System.DirectoryServices. Il primo consiste nell'utilizzare i membri della proprietà Properties. L'altro consiste nell'utilizzare i membri dell'insieme ResultPropertyValueCollection che vengono ottenuti con la classe DirectorySearcher. Ognuno di questi modi restituisce oggetti generici il cui tipo effettivo di dati dipende dal tipo di dati dello schema della proprietà. La proprietà Properties restituisce lo stesso tipo di oggetto del metodo IADs.GetInfoEx. Per ulteriori informazioni sul metodo IADs.GetInfoEx, vedere l'argomento relativo a IADs::GetInfoEx in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkID=27252 (informazioni in lingua inglese). La proprietà Item converte alcuni tipi di dati in tipi di dati .NET Framework. Nella tabella seguente vengono mostrati i tipi di schema Servizi di dominio Active Directory e i tipi di dati associati interpretati e non interpretati. Per ulteriori informazioni sul tipo di schema Servizi di dominio Active Directory o sul nome dell'interfaccia COM elencato nella tabella seguente, vedere gli argomenti relativi in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkID=27252 (informazioni in lingua inglese).
| Tipo di schema Servizi di dominio Active Directory | Tipo non interpretato (come restituito da Properties) | Tipo interpretato (come restituito da ResultPropertyValueCollection) |
|---|---|---|
Boolean |
Boolean |
|
Enumeration |
Int32 |
|
Enumeration (Delivery-Mechanism) |
Int32 |
Int32 |
Enumeration (Export-Information-Level) |
Int32 |
Int32 |
Enumeration (Preferred-Delivery-Method) |
Int32 |
Int32 |
Integer |
Int32 |
Int32 |
Interval |
Un oggetto COM di cui può essere eseguito il cast a IADsLargeInteger. |
|
LargeInteger |
Un oggetto COM di cui può essere eseguito il cast a IADsLargeInteger. |
Int64 |
Object(Access-Point) |
Non supportate |
Non supportate |
Object(DN-Binary) |
Un oggetto COM di cui può essere eseguito il cast a IADsDNWithBinary. |
String contenente il nome distinto e i dati binari nel formato specificato da Object(DN-Binary). |
Object(DN-String) |
Un oggetto COM di cui può essere eseguito il cast a IADsDNWithString. |
String contenente il nome distinto e i dati stringa nel formato specificato da Object(DN-String). |
Object(DS-DN) |
String |
String |
Object(OR-Name) |
Un oggetto COM di cui può essere eseguito il cast a IADsDNWithBinary. |
String contenente il nome distinto e i dati binari nel formato specificato da Object(DN-Binary). |
Object(Presentation-Address) |
String |
String |
Object(Replica-Link) |
Byte[] |
Byte[] |
String(Generalized-Time) |
DateTime |
|
String(IA5) |
String |
String |
String(NT-Sec-Desc) |
Un oggetto COM di cui può essere eseguito il cast a IADsSecurityDescriptor. |
Byte[] |
String(Numeric) |
String |
String |
String(Object-Identifier) |
String |
String |
String(Octet) |
Byte[] |
Byte[] |
String(Printable) |
String |
String |
String(Sid) |
Byte[] |
Byte[] |
String(Teletex) |
String |
String |
String(Unicode) |
String |
String |
String(UTC-Time) |
DateTime |
DateTime |
Interpretazione dei valori delle proprietà degli oggetti ADSI
Per alcuni tipi di sintassi di Servizi di dominio Active Directory, ad esempio LargeInteger, System.DirectoryServices restituisce il valore della proprietà come un oggetto COM. È necessario eseguire il cast di questo oggetto COM al tipo ADSI appropriato nel tipo di proprietà effetttivo. Ad esempio, la proprietà lastLogon appartiene alla sintassi Interval. System.DirectoryServices restituisce il valore della proprietà per una sintassi Interval come un oggetto COM che supporta l'interfaccia IADsLargeInteger. Per ulteriori informazioni su questi elementi, vedere gli argomenti relativi a LargeInteger, Interval, lADsLargeInteger e lastLogon in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkID=27252 (informazioni in lingua inglese).
Nell'esempio di codice C# riportato di seguito viene illustrato come ottenere l'interfaccia IADsLargeInteger dall'oggetto COM eseguendo il cast dell'oggetto COM a un oggetto ActiveDs.IADsLargeInteger. Se si sta sviluppando un'applicazione che utilizza oggetti nello spazio dei nomi ActiveDS, fare riferimento alla libreria dei tipi ActiveDS, activeds.tlb, al momento della compilazione e del collegamento dell'applicazione.
object obj = entry.Properties["lastLogon"];
ActiveDs.IADsLargeInteger largeIntADSI;
largeIntADSI = (ActiveDs.IADsLargeInteger)obj;
Nella tabella seguente sono elencati i tipi di sintassi restituiti da System.DirectoryServices come oggetti COM e le interfacce ADSI associate di ogni tipo di sintassi. Per ulteriori informazioni su un tipo di sintassi o interfaccia ADSI elencato nella tabella seguente, vedere l'argomento relativo in MSDN Library all'indirizzo https://go.microsoft.com/fwlink/?LinkID=27252 (informazioni in lingua inglese).
| Tipo di sintassi | Interfaccia ADSI |
|---|---|
Interval |
IADsLargeInteger |
LargeInteger |
IADsLargeInteger |
Object(DN-Binary) |
IADsDNWithBinary |
Object(DN-String) |
IADsDNWithString |
Object(OR-Name) |
IADsDNWithBinary |
String(NT-Sec-Desc) |
IADsSecurityDescriptor |
Nell'esempio di codice C# riportato di seguito viene illustrato come ottenere l'interfaccia appropriata per un oggetto ADSI COM. In questo esempio viene utilizzata l'eccezione InvalidCastException per determinare se il cast è valido.
static string GetADSIComObjectValue(object obj)
{
if(obj.GetType().Name.Equals("__ComObject"))
{
/*
Try IADsSecurityDescriptor. This is returned for the following AD
syntax type:
String(NT-Sec-Desc)
*/
try
{
ActiveDs.IADsSecurityDescriptor secDesc;
secDesc = (ActiveDs.IADsSecurityDescriptor)obj;
return "IADsSecurityDescriptor:" + secDesc.Owner.ToString();
}
catch (System.InvalidCastException)
{
}
/*
Try IADsLargeInteger. This is returned for the following AD syntax
types:
Interval
LargeInteger
*/
try
{
ActiveDs.IADsLargeInteger largeIntADSI;
largeIntADSI = (ActiveDs.IADsLargeInteger)obj;
Int64 largeInt = largeIntADSI.HighPart * 0x100000000;
largeInt += largeIntADSI.LowPart;
return "IADsLargeInteger:" + largeInt.ToString();
}
catch (System.InvalidCastException)
{
}
/*
Try IADsDNWithBinary. This is returned for the following AD syntax
types:
Object(DN-Binary)
Object(OR-Name)
*/
try
{
ActiveDs.IADsDNWithBinary dnWithBinary;
dnWithBinary = (ActiveDs.IADsDNWithBinary)obj;
return "IADsDNWithBinary:" +
dnWithBinary.DNString + ":" +
dnWithBinary.BinaryValue.ToString();
}
catch (System.InvalidCastException)
{
}
/*
Try IADsDNWithString. This is returned for the following AD syntax
type:
Object(DN-String)
*/
try
{
ActiveDs.IADsDNWithString dnWithString;
dnWithString = (ActiveDs.IADsDNWithString)obj;
return "IADsDNWithString:" +
dnWithString.DNString + ":" +
dnWithString.StringValue;
}
catch (System.InvalidCastException)
{
}
throw new System.ArgumentException("Unknown COM Object type.");
}
else
{
throw new System.ArgumentException("Object is not a COM Object.");
}
}
Vedere anche
Riferimenti
System.DirectoryServices
DirectoryEntry
ResultPropertyValueCollection
DirectorySearcher
Concetti
Proprietà degli oggetti directory
Send comments about this topic to Microsoft.
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.