Angemeldeter Benutzer
Angemeldeter Benutzer
Wie kann ich herausfinden, welcher Benutzer am Windows-Rechner angemeldet ist?
Ich könnte zwar den Benutzernamen mit der Environ-Variable "Username" ermitteln.
Jedoch funktioniert das nicht, wenn ein Programm mit "Ausführen als" unter einen
anderen Benutzer gestartet wurde. In diesem Fall bekomme ich nicht den am Rechner
angemeldeten Benutzernamen, sondern den Benutzer unter dem ich das Programm
gestartet habe.
Schließlich will ich den Registryschlüssel unter "HKEY_USERS" ermitteln, damit ich
dort bestimmte Einstellungen für den angemeldeten Benutzer eintragen kann.
Ich könnte zwar den Benutzernamen mit der Environ-Variable "Username" ermitteln.
Jedoch funktioniert das nicht, wenn ein Programm mit "Ausführen als" unter einen
anderen Benutzer gestartet wurde. In diesem Fall bekomme ich nicht den am Rechner
angemeldeten Benutzernamen, sondern den Benutzer unter dem ich das Programm
gestartet habe.
Schließlich will ich den Registryschlüssel unter "HKEY_USERS" ermitteln, damit ich
dort bestimmte Einstellungen für den angemeldeten Benutzer eintragen kann.
Re: Angemeldeter Benutzer
hmm .. computername ist ja schonmal gut .. gefragt war nach dem angemeldeten User
das sollte so gehen
den aktuellen User solltest du unter
HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Explorer und dort in
der Variablen 'Logon User Name' finden.
ömm also eventuell so (code von STARGÅTE irgendwann einmal)
das sollte so gehen
den aktuellen User solltest du unter
HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Explorer und dort in
der Variablen 'Logon User Name' finden.
ömm also eventuell so (code von STARGÅTE irgendwann einmal)
Code: Alles auswählen
;STARGÅTE irgendwann einmal
; Liest eine Variable aus der Registrierung aus
Procedure.s ReadReg(HKEY, Ort$, Var$)
RetVal = RegOpenKeyEx_(HKEY, Ort$, 0, #KEY_READ, @lhkey)
cch = 255 : sValue$ = Space(255)
lType = #REG_SZ
lrc = RegQueryValueEx_(lhkey, Var$, 0, @lType, @sValue$, @cch)
RegCloseKey_(lhkey)
ProcedureReturn sValue$
EndProcedure
Debug ReadReg(#HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Explorer\","Logon User Name")
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Re: Angemeldeter Benutzer
In HKEY_CURRENT_USER und damit auch unter HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Explorer
stehen immer die Informationen zum Benutzer nicht zum Computer!
Wenn ich den genannten Zweig nehme und ein Programm mit "Ausführen als" unter einen anderen Benutzer aufrufe,
dann wird der Benutzer ausgelesen, der das Programm gestartet hat und leider nicht der Benutzer der am Computer
angemeldet ist.
Beispiel:
Am Computer angemeldet: purebas
Programm wird ausgeführt unter: Administrator
In diesem Fall wird innerhalb des aufgerufenen Programms als Benutzername nicht purebas sondern Administrator angezeigt.
Das nutzt mir aber nichts, da ich in den USER-Zweig von purebas bzw. in den dafür vorgesehenen Zweig unter HKEY_USERS
etwas eintragen möchte.
stehen immer die Informationen zum Benutzer nicht zum Computer!
Wenn ich den genannten Zweig nehme und ein Programm mit "Ausführen als" unter einen anderen Benutzer aufrufe,
dann wird der Benutzer ausgelesen, der das Programm gestartet hat und leider nicht der Benutzer der am Computer
angemeldet ist.

Beispiel:
Am Computer angemeldet: purebas
Programm wird ausgeführt unter: Administrator
In diesem Fall wird innerhalb des aufgerufenen Programms als Benutzername nicht purebas sondern Administrator angezeigt.
Das nutzt mir aber nichts, da ich in den USER-Zweig von purebas bzw. in den dafür vorgesehenen Zweig unter HKEY_USERS
etwas eintragen möchte.
Re: Angemeldeter Benutzer
hilft Dir das hier weiter ?:
Code: Alles auswählen
;Modul SystemOrdner Version 1.02 vom 23.05.2007
#PB_Vers = "4.20"
;
;Funktion: liefert DateiPfade von Windows-SystemOrdnern
;
;Aufruf: Pfad$ = SystemOrdner( OrdnerNr)
; wobei OrdnerNr den gewünschten Pfad bestimmt:
; 2 = C:\Dokumente und Einstellungen\[username]\Startmenü\Programme
; 5 = C:\Dokumente und Einstellungen\[username]\Eigene Dateien
; 6 = C:\Dokumente und Einstellungen\[username]\Favoriten
; 7 = C:\Dokumente und Einstellungen\[username]\Startmenü\Programme\Autostart
; 8 = C:\Dokumente und Einstellungen\[username]\Recent
; 9 = C:\Dokumente und Einstellungen\[username]\SendTo
; 11 = C:\Dokumente und Einstellungen\[username]\Startmenü
; 16 = C:\Dokumente und Einstellungen\[username]\Desktop
; 19 = C:\Dokumente und Einstellungen\[username]\Netzwerkumgebung
; 20 = C:\WINNT\Fonts
; 21 = C:\Dokumente und Einstellungen\[username]\Vorlagen
; 22 = C:\Dokumente und Einstellungen\All Users\Startmenü
; 23 = C:\Dokumente und Einstellungen\All Users\Startmenü\Programme
; 24 = C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart
; 25 = C:\Dokumente und Einstellungen\All Users\Desktop
; 26 = C:\Dokumente und Einstellungen\[username]\Anwendungsdaten
; 27 = C:\Dokumente und Einstellungen\[username]\Druckumgebung
; 28 = C:\Dokumente und Einstellungen\[username]\Lokale Einstellungen\Anwendungsdaten
; 31 = C:\Dokumente und Einstellungen\All Users\Favoriten
; 32 = C:\Dokumente und Einstellungen\[username]\Lokale Einstellungen\Temporary Internet Files
; 33 = C:\Dokumente und Einstellungen\[username]\Cookies
; 34 = C:\Dokumente und Einstellungen\[username]\Lokale Einstellungen\Verlauf
; 35 = C:\Dokumente und Einstellungen\All Users\Anwendungsdaten
; 36 = C:\WINNT
; 37 = C:\WINNT\system32
; 38 = C:\Programme
; 39 = C:\Dokumente und Einstellungen\[username]\Eigene Dateien\Eigene Bilder
; 40 = C:\Dokumente und Einstellungen\[username]
; 41 = C:\WINNT\system32
; 43 = C:\Programme\Gemeinsame Dateien
; 45 = C:\Dokumente und Einstellungen\All Users\Vorlagen
; 46 = C:\Dokumente und Einstellungen\All Users\Dokumente
; 47 = C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Verwaltung
; 48 = C:\Dokumente und Einstellungen\[username]\Startmenü\Programme\Verwaltung
;
;
Procedure.s SystemOrdner(OrdnerNr)
Protected Pfad$, *itemID.ITEMIDLIST = #Null
If SHGetSpecialFolderLocation_ (0, OrdnerNr, @*itemID) = #NOERROR
Pfad$ = Space (#MAX_PATH)
If SHGetPathFromIDList_ (*itemID, @Pfad$)
ProcedureReturn Pfad$
EndIf
EndIf
ProcedureReturn ""
EndProcedure


Re: Angemeldeter Benutzer
hol dir dann mal psloggedon.exe von den ps-tools von http://www.sysinternals.com (Microsoft)
da mehrere User angemeldet gleichzeitig sein können, gibt es wohl keine ganz einfache Lösung
wie 'aus der Registry lesen' oder so.
aus der psloggedonhilfe
da mehrere User angemeldet gleichzeitig sein können, gibt es wohl keine ganz einfache Lösung
wie 'aus der Registry lesen' oder so.
aus der psloggedonhilfe
PsLoggedOn's definition of a locally logged on user is one that has their profile loaded into the Registry, so PsLoggedOn determines who is logged on by scanning the keys under the HKEY_USERS key. For each key that has a name that is a user SID (security Identifier), PsLoggedOn looks up the corresponding user name and displays it. To determine who is logged onto a computer via resource shares, PsLoggedOn uses the NetSessionEnum API. Note that PsLoggedOn will show you as logged on via resource share to remote computers that you query because a logon is required for PsLoggedOn to access the Registry of a remote system.
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Re: Angemeldeter Benutzer
Leider helfen mir die Tipps nicht weiter.
@sibru
Ich kann mit SystemOrdner() doch nur die einzelnen Systempfade abfragen.
Jedoch bekomme ich nicht den am Rechner angemeldeten Benutzer heraus
und auch nicht dessen Systempfade. Wenn ich ein Programm mit
"Ausführen als" starte, dann kann ich SystemOrdner() zwar benutzen.
Jedoch werde ich nur die Pfade zurückbekommen, die für den Benutzer
gelten unter dessen ich das Programm bzw. den Prozess gestartet habe.
@bobobo
Die Programme nutzen mir nichts, da ich die Funktion innerhalb meines
PureBasic-Programms benötige.
Es muss doch irgendeinen Registereintrag geben, damit ich den am Computer
angemeldeten Benutzer ermitteln kann. Es muss doch einen PB-Programmierer
geben, der die Funktion ebenfalls schon benötigt und eine Lösung hat.
@sibru
Ich kann mit SystemOrdner() doch nur die einzelnen Systempfade abfragen.
Jedoch bekomme ich nicht den am Rechner angemeldeten Benutzer heraus
und auch nicht dessen Systempfade. Wenn ich ein Programm mit
"Ausführen als" starte, dann kann ich SystemOrdner() zwar benutzen.
Jedoch werde ich nur die Pfade zurückbekommen, die für den Benutzer
gelten unter dessen ich das Programm bzw. den Prozess gestartet habe.
@bobobo
Die Programme nutzen mir nichts, da ich die Funktion innerhalb meines
PureBasic-Programms benötige.
Es muss doch irgendeinen Registereintrag geben, damit ich den am Computer
angemeldeten Benutzer ermitteln kann. Es muss doch einen PB-Programmierer
geben, der die Funktion ebenfalls schon benötigt und eine Lösung hat.

- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Angemeldeter Benutzer
Kann man nicht einfach schauen wer den 'explorer.exe'-Prozess gestartet hat?
Re: Angemeldeter Benutzer
Wieso muss es dazu einen Registry-Eintrag geben? Ich kann mir allerdings vorstellen, dass Dir WMI (Windows Management Instrumentation) weiterhilft.purebas hat geschrieben:Es muss doch irgendeinen Registereintrag geben, damit ich den am Computer
angemeldeten Benutzer ermitteln kann.
Grüße, Nino
Re: Angemeldeter Benutzer
@NicTheQuick
Das könnte ein Weg sein. Allerdings wird bei einem Prozess -glaube ich- auch nur der Benutzer angezeigt, mit dem das Programm / der Prozess gestartet wurde. Wie auch immer - für mein Verständnis müsste es doch einen einfacheren Weg geben.
@nino
Ja natürlich - Du hast Recht. Einen Registry-Eintrag muss es ja nicht zwangsläufig geben. Ein API-Aufruf würde es auch tun. WMI finde ich ebenfalls viel zu "wild".
Ich glaube es gibt da was in der NetApi32.dll. Da müsste es eine Funktion geben mit der ich den angemeldeten Benutzer ermitteln kann. Ich glaube mit dieser Funktion kann man auch einen beliebigen Rechner in einem Netzwerk angeben und bekommt dann für diesen entfernten Rechner den angemeldeten Benutzer. Den Rechnername habe ich ja und könnte damit also den Benutzer ermitteln.
Ich hoffe es gibt noch einen PB-Experten, der ein kleines Beispiel hat.
Das könnte ein Weg sein. Allerdings wird bei einem Prozess -glaube ich- auch nur der Benutzer angezeigt, mit dem das Programm / der Prozess gestartet wurde. Wie auch immer - für mein Verständnis müsste es doch einen einfacheren Weg geben.
@nino
Ja natürlich - Du hast Recht. Einen Registry-Eintrag muss es ja nicht zwangsläufig geben. Ein API-Aufruf würde es auch tun. WMI finde ich ebenfalls viel zu "wild".
Ich glaube es gibt da was in der NetApi32.dll. Da müsste es eine Funktion geben mit der ich den angemeldeten Benutzer ermitteln kann. Ich glaube mit dieser Funktion kann man auch einen beliebigen Rechner in einem Netzwerk angeben und bekommt dann für diesen entfernten Rechner den angemeldeten Benutzer. Den Rechnername habe ich ja und könnte damit also den Benutzer ermitteln.
Ich hoffe es gibt noch einen PB-Experten, der ein kleines Beispiel hat.