Hallo,
ich habe das Problem, dass ich mit dem SYSTEM-Account feststellen muss, ob ein Anwender angemeldet ist oder nicht.
Wenn er angemeldet ist, darf ich nach einer Installation nämlich den Rechenr nicht durchstarten...
Mit dem folgenden Befehl erhalte ich zwar einen Usernamen, allerdings muss dies nicht heißen, dass der gerade angemeldet ist, sondern, dass er der letzte angemeldete User war.
$RegUser = RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon", "DefaultUserName")
( s. a. [ gelöst ] Angemeldeten User anzeigen?)
Erst bei einer erneuten Anmeldung wird der Wert überschrieben... er wird nicht beim Abmelden gelöscht (leider )
Jetzt hatte ich die Idee mit den folgenden Zeilen das Problem zu fixen, doch...
$objNetwork = ObjCreate("WScript.Network")
Global $loggegInUser = $objNetwork.UserName
if $loggegInUser = "SYSTEM" then ... shutdown(6)
nun wird natürlich automatisch ein Reboot gemacht, da der ausführende User in diesem Fall "SYSTEM" ist (kleiner Denkfehler... )
Nun gibt es noch das Tool psloggedon.exe von Sysinternals/MS, allerdings muss ich mich da erst durch die Resultatsliste wühlen, die auch noch in verschiedenen Sprachen sein kann...
Außerdem ist es ein weiteres Tool welches eingebunden werden muss und dass ggfs. beim Betriebsrat und den Security-Zuständigen nicht so beliebt ist...
Jetzt habe ich 'mal ein wenig gesucht und eine VBS Version gefunden und versucht diese umzusetzen:
Die VBS Variante:
strComputer = "computer_ahe1"
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
For Each objComputer In colComputer
WScript.Echo "Logged-on user: " & objComputer.UserName
Next
Die AutoIt Variante:
$strComputer = "computer_ahe1"
$objWMIService = ObjGet("winmgmts:" & "\\" & $strComputer & "\root\cimv2")
$colComputer = $objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
For $objComputer In $colComputer
MsgBox(0,"Test", "Logged-on user: " & $objComputer.UserName & " on: " & $strComputer)
Next
Eigentlich wollte ich ja jetzt die Frage stellen, wie es geht, aber jetzt, da es so aussieht als wenn es funktioniert frage ich eher, gibt es eine geschicktere Lösung?
mfg
Axel