Code-Beispiel

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.

Programmcodebeispiel in 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

Weiteres Programmcodebeispiel in 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

Buchtipp

Buchcover PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch (6. Auflage Juni 2024 (10. Auflage Gesamtreihe)) PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
Autor(en): Dr. Holger Schwichtenberg
Erschienen 2024
Umfang: 1426 Seiten
ISBN: 3446481958

Beratung & Support

Schulungen

  Anfrage für eine individuelle Schulung zum Thema VISUAL BASIC C#   Gesamter Schulungsthemenkatalog

Fachbücher

  Alle unsere aktuellen Fachbücher   E-Book-Abo für ab 99 Euro im Jahr