AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Who's logged on?
Thema durchsuchen
Ansicht
Themen-Optionen

Who's logged on?

Ein Thema von Luckie · begonnen am 23. Jun 2007 · letzter Beitrag vom 31. Jan 2010
Antwort Antwort
Seite 9 von 11   « Erste     789 1011      
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
LoggedOn
Das Programm LoggedOn listet alle Benutzer auf, die an einem Computer zur Zeit angemeldet sind und über welchen Server sie authentifiziert wurden.

Inspiriert hat mich ein gleichnamiges Programm von Olli. Ich bin heute im PSDK über die Netzwerkfunktion gestolpert und habe mich erinnert, dass Olli das irgendwie anders gemacht hat, komplizierter (umständlicher?). Da wollte ich es mit eben der entsprechenden API-Funktion mal probieren.

Features:
- Scannen eines einzelnen Rechners
- Scannen einer Arbeitsgruppe / Domain
- Animation und mitlaufende Zeit während des Scans
- Informationen über Rechner (Name, IP, Betriebssystem, ...)
- Informationen über eingeloggten Benutzer (Name, Logondomain, Logonserver)
- Rechner im Netzwerk können remote runtergefahren werden
- Uptime der Remoterechner wird angezeigt (neu in Version 2.1)
Miniaturansicht angehängter Grafiken
loggedon_153.jpg  
Angehängte Dateien
Dateityp: zip loggedon_140.zip (153,5 KB, 371x aufgerufen)
Ein Teil meines Codes würde euch verunsichern.
 
uwewo

 
Delphi 2006 Professional
 
#81
  Alt 17. Jul 2007, 17:30
Nun erhalte ich auch Fehler

Nr.53 bei Rechnern
Nr. 64 bei Domains

also perfekt
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#82
  Alt 17. Jul 2007, 17:34
Zitat von uwewo:
Nun erhalte ich auch Fehler

Nr.53 bei Rechnern
Nr. 64 bei Domains
Jupp, so soll es sein.

Zitat:
also perfekt
Danke.

Was man aus so einem einfachen Tool alles rausholen kann...
Michael
  Mit Zitat antworten Zitat
uwewo

 
Delphi 2006 Professional
 
#83
  Alt 17. Jul 2007, 18:12
Einfach, klein und effektiv

Bin für jeden weiteren Test bereit
Uwe
  Mit Zitat antworten Zitat
JohnML
 
#84
  Alt 26. Jul 2007, 14:51
Hallo,

Version 1.1.06

ein Domain scan im Netzwerk (ca. 100 Rechner in verschiedenen Lokationen) mit W2k, Windows Server 2003, Windows XP und Terminalservern hat funktioniert. Ich hab's als Admin ausgeführt.

Wenn ich die mit Delphi 5 Pro compilieren will, fehlt Types.pas. Mal sehen ob mein Delphi 7 zu Hause compiliert.

Danke, so ein Programm hat mein Admin hier gesucht. Bin aber auch ziemlich sicher, dass Windows mit Bordmitteln sowas anzeigen können sollte.

Vorschlag:
csv-Export der Liste mit den Spalten: PCName, UserName


Gruß

JohnML
John Landmesser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#85
  Alt 26. Jul 2007, 19:17
Eine XML-Datei eignet sich da wohl besser. Aber wozu? Die eingeloggten Benutzer können sich ja von Minute zu Minute ändern.
Michael
  Mit Zitat antworten Zitat
JohnML
 
#86
  Alt 27. Jul 2007, 07:50
Zitat von Luckie:
Eine XML-Datei eignet sich da wohl besser. Aber wozu? Die eingeloggten Benutzer können sich ja von Minute zu Minute ändern.
A) Wir haben einen neuen Admin, der leider kein ordentlich dokumentiertes Netz vorfindet und sich nun fragt, wer sitzt denn an dem PC mit dem Namen PC00120?

B) csv kann z.B. jede Excel Version anzeigen.


Eine weiterer Vorschlag zur Erweiterung von LoggedOn:
Antwort auf die Frage: An welchem PC arbeitet User XY zur Zeit ?


Ich bin auf LoggedOn gestossen, weil ich zum Thema "gegoogelt" habe, dabei bin ich auf VB Code gestossen, der angeblich ermittelt, an welchem PC User XY zur Zeit arbeitet.
Ich werde selbst mal probieren, ob ich den code nach Pascal migrieren kann.
Natürlich würde es ausreichen, das Ergebnis der Domainsuche von LoggedOn zu filtern.

Hier also der VB-Code:


Code:
Private Declare Function NetWkstaUserEnum Lib "netapi32" (ByVal lpServer As String, ByVal Level As Long, lpBuffer As Long, ByVal PrefMaxLen As Long, lpEntriesRead As Long, lpTotalEntries As Long, Resume_Handle As Long) As Long

 Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (pTo As Any, uFrom As Any, ByVal lSize As Long)

 Private Declare Function NetApiBufferFree Lib "netapi32" (ByVal pBuffer As Long) As Long

 Private Const ERROR_MORE_DATA = 234

 

 Private Type WKSTA_USER_INFO_0

     wkui0_username As Long

 End Type

 Private Const ERROR_ACCESS_DENIED As Long = 5

 Private Const ERROR_BAD_NETPATH As Long = 53

 Private Const ERROR_INVALID_PARAMETER As Long = 87

 Private Const ERROR_NOT_SUPPORTED As Long = 50

Private Const ERROR_INVALID_NAME As Long = 123 

 
  Public Function GetCompUsers(ByVal ServerName As String, ByRef sUsers() As String, ByRef lCount As Long) As Boolean
 
  Dim lpBuffer As Long
 
  Dim lpUsers() As WKSTA_USER_INFO_0
 
  Dim nRead As Long
 
  Dim nTotal As Long
 
  Dim retVal As Long
 
  Dim i As Long
 
  Dim hResume As Long
 
      GetCompUsers = False
 
      lCount = 0
 
      Erase sUsers
 
   
 
      If Len(ServerName) = 0 Then
 
          ServerName = vbNullString
 
      Else
 
          If Left(ServerName, 2) <> "\\" Then
 
              ServerName = "\\" & ServerName
 
          End If
 
          ServerName = StrConv(ServerName, vbUnicode)
 
      End If
 
     
 
      hResume = 0
 
     
 
      Do
 
          retVal = NetWkstaUserEnum(ServerName, 0, lpBuffer, &H4000, nRead, nTotal, hResume)
 
          If retVal = 0 Or retVal = ERROR_MORE_DATA Then
 
              lCount = lCount + nRead
 
              GetCompUsers = True
 
              If nRead > 0 Then
 
                  ReDim lpUsers(0 To nRead - 1)
 
                  ReDim Preserve sUsers(0 To lCount - 1)
 
                  CopyMem lpUsers(0), ByVal lpBuffer, nRead * Len(lpUsers(0))
 
                  For i = 0 To nRead - 1
 
                      sUsers(lCount - nRead + i) = PointerToStringW(lpUsers(i).wkui0_username)
 
                  Next i
 
              End If
 
              DoEvents
 
          Else
 
              ReDim sUsers(0)
 
              Select Case retVal
 
                  Case ERROR_ACCESS_DENIED
 
                      sUsers(0) = "Error : Access Denied"
 
                  Case ERROR_BAD_NETPATH
 
                      sUsers(0) = "Error : Bad Network Path"
 
                  Case ERROR_NOT_SUPPORTED
 
                      sUsers(0) = "Error : Not Supported"
 
                  Case ERROR_INVALID_NAME
 
                      sUsers(0) = "Error : Invalid Name"
 
                  Case Else
 
                      sUsers(0) = "Error : " & retVal & vbCrLf & "Ask Frans to include this error description"
 
              End Select
 
              lCount = 1
 
          End If
 
      Loop While retVal = ERROR_MORE_DATA
 
     
 
     ' Clean up
 
     If lpBuffer Then
 
        retVal = NetApiBufferFree(lpBuffer)
 
     End If
 
   
 
  End Function


Noch was:
Ich habe jetzt in den Sourcen von LoggedOn zum ersten Mal Code gesehen, der eine Application ohne VCL-Lasten erzeugt. Wenige KB für die Anwendung ist beeindruckend, doch den Code kann ich nur schwer lesen, geschweige denn mal eben den csv-Export einbauen. Ist wohl fast schon eine Glaubensfrage: 800 kb oder 80 kb für die exe ?!

Gute Arbeit und herzlichen Gruß

JohnML


[edit=Matze][code]-tags gesetzt. MfG, Matze[/edit]
John Landmesser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#87
  Alt 27. Jul 2007, 11:26
[quote="JohnML"]
Zitat von Luckie:
Eine weiterer Vorschlag zur Erweiterung von LoggedOn:
Antwort auf die Frage: An welchem PC arbeitet User XY zur Zeit ?
Also man gibt einen Benutzer ein und das Programm sagt einem, an welchem PC der Benutzer sitzt? Nun ja, da kann man ja die Domain scannen und dann selber in der Liste gucken, ob der Benutzer in der Liste erscheint.

Und den CSV-Export implementiert man natürlich in der Klasse und das hat nichts mit VCL oder nicht VCL zu tun.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#88
  Alt 27. Jul 2007, 23:11
Aktuelle Version: 1.1.0.11

- Neu: Zeilt läuft während des Scans mit (sieht auf dem Screenshot etwas blöd aus: 0:00, aber bei nur einem Rechner... )
- Neu: Courier New als Schrift für den Treeview
Michael
  Mit Zitat antworten Zitat
uwewo

 
Delphi 2006 Professional
 
#89
  Alt 30. Jul 2007, 11:39
Hi Luckie,

neue Version getestet, ScreenShot für Deine Sammlung im Anhang.
Miniaturansicht angehängter Grafiken
loggedon_213.jpg  
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#90
  Alt 30. Jul 2007, 11:49
Danke, danke. Mittlerweile brauche ich keine Screenshots mehr. Ich bin wieder im Büro und kann hier das Netzwerk scannen. ;?
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 11   « Erste     789 1011      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz