Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.DirectoryServices.DirectoryEntry aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Die in den Collections enthaltenen Session- bzw. Resource-Objekte besitzen keinen ADSI-Pfad, da sie keine persistenten Verzeichnisobjekte sind. Sie sind daher bei der Instanziierung eines DirectoryEntry-Objekts nicht direkt einzeln ansprechbar, sondern können nur – wie im Folgenden gezeigt – über den Durchlauf durch die Collections angesprochen werden.
Bei der Resource-Collection kommt es beim Zugriff via COM-Interoperabilität zu einem Problem, weil die Collection ein Objekt mehr enthält, als es tatsächlich geöffnete Pfade gibt. Dieses letzte Objekt ist nicht auswertbar; daher die Fehlerbehandlung mit Try...End Try in obiger Routine.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' --- Auflisten der Sitzungen und Ressourcen
Sub WINNT_SitzungenRessourcen()
Dim fs As DirectoryEntry
Dim iads_fs As ActiveDs.IADsFileService
Dim oSession As ActiveDs.IADsSession
Dim oResource As ActiveDs.IADsResource
' --- Bindung an Dienstobjekt
fs = New _
DirectoryEntry("WinNT://sonne2000/lanmanserver")
' -- Bindung an Fileservice
iads_fs = fs.NativeObject
' -- Sitzungen
For Each oSession In iads_fs.Sessions
say(oSession.User & " ist verbunden von " & _
oSession.Computer & " seit " & _
oSession.ConnectTime & " Sekunden")
Next
' -- Ressourcen
For Each oResource In iads_fs.Resources
Try
out(oResource.User & " verwendet " & _
oResource.Path)
Catch
out("/// nicht auswertbares Resource-Objekt!")
End Try
Next
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.Collections;
using System.DirectoryServices;
namespace FCLBuch._SystemDirectoryServices {
public class SamplesADSIWINNT {
public void WINNT_SitzungenRessourcen() {
// Auflisten der Sitzungen und Ressourcen
// Bindung an Dienstobjekt
DirectoryEntry fs = new DirectoryEntry("WinNT://sonne2000/lanmanserver");
// Bindung an Fileservice
ActiveDs.IADsFileServiceOperations iads_fs = (ActiveDs.IADsFileServiceOperations)fs.NativeObject;
// Sitzungen
foreach (ActiveDs.IADsSession oSession in iads_fs.Sessions()) {
FclOutput.PrintOut(oSession.User + " ist verbunden von " + oSession.Computer + " seit " +
oSession.ConnectTime + " Sekunden");
}
// Ressourcen
foreach (ActiveDs.IADsResource oResource in iads_fs.Resources()) {
try {
FclOutput.PrintOut(oResource.User + " verwendet " + oResource.Path);
} catch {
FclOutput.PrintOut("/// nicht auswertbares Resource-Objekt!");
}
}
}
}
}
Hinweise
Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und
PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung
von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B.
Console.WriteLine() einsetzen.
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.DirectoryServices.DirectoryEntry'
Übersicht über den FCL-Namensraum 'System.DirectoryServices'
.NET & Visual Studio Community Portal