Delphi-PRAXiS
Seite 9 von 11   « Erste     789 1011      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Who's logged on? (https://www.delphipraxis.net/94554-whos-logged.html)

uwewo 17. Jul 2007 17:30

Re: Who's logged on?
 
Nun erhalte ich auch Fehler

Nr.53 bei Rechnern
Nr. 64 bei Domains

also perfekt ;-)

Luckie 17. Jul 2007 17:34

Re: Who's logged on?
 
Zitat:

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... ;)

uwewo 17. Jul 2007 18:12

Re: Who's logged on?
 
Einfach, klein und effektiv ;-)

Bin für jeden weiteren Test bereit

JohnML 26. Jul 2007 14:51

Re: Who's logged on?
 
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

Luckie 26. Jul 2007 19:17

Re: Who's logged on?
 
Eine XML-Datei eignet sich da wohl besser. Aber wozu? Die eingeloggten Benutzer können sich ja von Minute zu Minute ändern.

JohnML 27. Jul 2007 07:50

Re: Who's logged on?
 
Zitat:

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]

Luckie 27. Jul 2007 11:26

Re: Who's logged on?
 
[quote="JohnML"]
Zitat:

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? :gruebel: 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. ;)

Luckie 27. Jul 2007 23:11

Re: Who's logged on?
 
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

uwewo 30. Jul 2007 11:39

Re: Who's logged on?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Luckie,

neue Version getestet, ScreenShot für Deine Sammlung im Anhang.

Luckie 30. Jul 2007 11:49

Re: Who's logged on?
 
Danke, danke. Mittlerweile brauche ich keine Screenshots mehr. Ich bin wieder im Büro und kann hier das Netzwerk scannen. ;?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Seite 9 von 11   « Erste     789 1011      

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