LoggedIn User herausfinden
Hallo @ All
Ich möchte im System-Kontext per VBSCRIPT den angemeldeten Benutzer herausfinden (LogonType 2). Das brauche ich, weil ich im Setup ein paar Dateien in UserProfil kopieren muss. Nun habe ich das Problem, dass ich im System-Kontext immer nur SYSTEM als LogedOn-User zurückbekomme.
Wie mache ich das?
Das funktioniert super solange die MSI im USER-Kontext installiert wird, also...
1) Rechtsklick => Installieren oder...
2) Cmd als Admin ausführen => Msiexec /i <pfad zur msi> /qn
Wird die MSI aber im SYSTEM-Kontext ausgeführt (etwa via SCCM oder lokal zum Testen via psexec) ist "CurrentUser" immer SYSTEM
Ich habe nun auch schon folgendes versucht. Jeweils in der VBSCRIPT CA in Deferred Execution in SystemContext:
a) meldet SYSTEM zurück:
b) meldet "NICHTS" zurück:
c) funkt auch nicht:
Weitere VBSCRIPT CA Type 38
wie aus a) und b) den Wert ermitteln in un ein Property schreiben ("REALLOGEDONUSER") (funktioniert! mit msgbox ausgegeben ist das Property befüllt!)
Das Property dann von CustomActionData auslesen und weiter verwenden.
Da ist das Value für das entsprechende Property aber leer (??)
Ende der Weisheit!
Hat jemand Ideen ??
Danke für eure Unterstützung!
Grüße Mayho
Ich möchte im System-Kontext per VBSCRIPT den angemeldeten Benutzer herausfinden (LogonType 2). Das brauche ich, weil ich im Setup ein paar Dateien in UserProfil kopieren muss. Nun habe ich das Problem, dass ich im System-Kontext immer nur SYSTEM als LogedOn-User zurückbekomme.
Wie mache ich das?
- in einem GetProperty CA Type 51 hole ich [LogonUser];[INSTALLDIR];[SUPPORTDIR]
- Dann lese ich in einer VBSCRIPT CA Type 3110 CustomActionData aus...
1
2
3
4
2
3
4
PropArray = Split(Session.Property("CustomActionData"), ";")
Dim CurrentUser : CurrentUser = PropArray(0)
Dim InstallDir : InstallDir = PropArray(1)
dim SupportDir : SupportDir = PropArray(2)
- ...und arbeite mit diesen Daten weiter
Das funktioniert super solange die MSI im USER-Kontext installiert wird, also...
1) Rechtsklick => Installieren oder...
2) Cmd als Admin ausführen => Msiexec /i <pfad zur msi> /qn
Wird die MSI aber im SYSTEM-Kontext ausgeführt (etwa via SCCM oder lokal zum Testen via psexec) ist "CurrentUser" immer SYSTEM
Ich habe nun auch schon folgendes versucht. Jeweils in der VBSCRIPT CA in Deferred Execution in SystemContext:
a) meldet SYSTEM zurück:
1
2
3
4
5
6
2
3
4
5
6
Dim CurrentUser : CurrentUser = GetLoggedOnUser
Function GetLoggedOnUserA()
Set oNetwork = CreateObject("Wscript.Network")
GetLoggedOnUserA= oNetwork.UserName
End Function
b) meldet "NICHTS" zurück:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim CurrentUser : CurrentUser = GetLoggedOnUser(2)
Function GetLoggedOnUser(Logon_Type)
Dim SessionIDs, LoggedOnUsers, objWMIService
On Error Resume Next
Set SessionIDs = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery( _
"Select * from Win32_LogonSession WHERE LogonType = '" & Logon_Type & "' AND AuthenticationPackage = 'Negotiate'")
For Each Item in SessionIDs
Set LoggedOnUsers = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Associators of {Win32_LogonSession.LogonId=" & item.LogonId & "} " _
& "Where AssocClass=Win32_LoggedOnUser Role=Dependent" )
For Each user In LoggedOnUsers
GetLoggedOnUser = user.name
Next
Next
End Function
c) funkt auch nicht:
Weitere VBSCRIPT CA Type 38
wie aus a) und b) den Wert ermitteln in un ein Property schreiben ("REALLOGEDONUSER") (funktioniert! mit msgbox ausgegeben ist das Property befüllt!)
Das Property dann von CustomActionData auslesen und weiter verwenden.
Da ist das Value für das entsprechende Property aber leer (??)
Ende der Weisheit!
Hat jemand Ideen ??
Danke für eure Unterstützung!
Grüße Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 491035
Url: https://administrator.de/forum/loggedin-user-herausfinden-491035.html
Ausgedruckt am: 02.04.2025 um 23:04 Uhr
3 Kommentare
Neuester Kommentar

Aktueller User steht auch in win32_Computersystem Property Username