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 FCL_Buch._System_DirectoryServices {

  public class Samples_ADSI_WINNT {
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