Sie sind hier: Startseite
 Liste aller Codebeispiele

Ausgabe der Benutzersitzungen und geöffneten Dateien

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!");
}

}
}
}
}

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.DirectoryServices.DirectoryEntry'  Übersicht über den FCL-Namensraum 'System.DirectoryServices'  .NET & Visual Studio Community Portal