Angemeldeter Benutzer
Re: Angemeldeter Benutzer
Wenn Einträge in der Registry für den User erstellt werden sollen sobald sich der User anmeldet,
warum machst Du das dann nicht genau auch beim Anmelden des Users ?
'Ne simple Lösung für Deine vermutetes Problem gibt es wohl eher nicht.
warum machst Du das dann nicht genau auch beim Anmelden des Users ?
'Ne simple Lösung für Deine vermutetes Problem gibt es wohl eher nicht.
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.
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
Re: Angemeldeter Benutzer
Du kannst doch das Programm als Datasection o.ä. in dein Programm einbetten und dann entsprechend an der Speicheradresse callen, dann ist es _innerhalb_ des Programmspurebas hat geschrieben: @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.

Das Problem ist, das alle Funktionalen Lösungen es nun mal nicht vorsehen bei einem RunAs anzunehmen das da ein "Oberuser" bestehen könnte. Der Sinn und zweck am RunAs ist ja, dass sich das Programm verhält wie als wenn es von demjenigen ausgeführt wurde. Wenn du aus einem Programm heraus einen OpenFileRequester() erzeugst, dann sind die Einträge ja auch je nachdem welcher Benutzer das Programm geöffnet hat, also die Favoriten an der Linken Seite, die des öffnenden Nutzers.
Die Lösung mit der Registry klappt ja insofern nicht, da der UserHive vom RunAs User geladen wird, wie gesagt es wird erwartet dass sich das Programm so verhält, wie wenn der Benutzer es ausgeführt hätte.
Meine Überlegung währe das man einen eigenen RunAs Loader bastelt der, bevor es das Programm via RunAs startet, eine Datei irgendwo anlegt wo jeder Zugriff hat und dort den aktuellen User rein schreibt. Diese Datei kann dann entsprechend vom Programm ausgewertet werden... Oder das ganze als StatupScript was in den Autostart kommt und da entsprechend eine Datei anlegt, wer der aktuell angemeldete Benutzer ist, etc.
Hoffe ich habe ein bisschen geholfen

Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Re: Angemeldeter Benutzer
Nein, nicht gut.bobobo hat geschrieben:Wenn Einträge in der Registry für den User erstellt werden sollen sobald sich der User anmeldet,
warum machst Du das dann nicht genau auch beim Anmelden des Users ?
Ich habe ein Konfigurationsprogramm, welches mit Adminrechten gestartet wird.
Nach den Änderungen werden einerseits Registry-Einträge unter HKLM gespeichert
und andererseits unter den USER-Zweig des am Rechner angemeldeten Benutzers.
Damit ich also in den richtigen USER-Zweig schreiben kann, benötigt das
Konfigurationsprogramm den entsprechenden UserName.
Das aufrufende Programm kann ich jedoch nicht ändern.
Sonst könnte ich einfach eine Datei-Schnittstelle oder so etwas bauen.
Re: Angemeldeter Benutzer
@Blackskyliner
Wenn ich runas mit der Option /env benutze, dann wird die Umgebung
vom aufrufenden Benutzers beibehalten. Dort hätte ich dann den
korrekten UserName. Aber, das aufzurufende Konfigurationsprogramm
wird nicht mit runas /env aufgerufen. Ich brauche eine Lösung die
immer funktioniert.
Das aufrufende Programm kann ich jedoch nicht ändern.
Sonst könnte ich einfach eine Datei-Schnittstelle oder so etwas bauen.
Wenn ich runas mit der Option /env benutze, dann wird die Umgebung
vom aufrufenden Benutzers beibehalten. Dort hätte ich dann den
korrekten UserName. Aber, das aufzurufende Konfigurationsprogramm
wird nicht mit runas /env aufgerufen. Ich brauche eine Lösung die
immer funktioniert.
Das aufrufende Programm kann ich jedoch nicht ändern.
Sonst könnte ich einfach eine Datei-Schnittstelle oder so etwas bauen.
- Deluxe0321
- Beiträge: 336
- Registriert: 19.05.2006 00:31
- Kontaktdaten:
Re: Angemeldeter Benutzer
Vll. schieße ich jetzt am Thema vorbei aber:
Oder GetUserNameEx_(). Genügt das nicht?
Grüße
Code: Alles auswählen
*Buffer = AllocateMemory(100) : Len.i = 100
GetUserName_(*Buffer,@len)
MessageRequester("User is",PeekS(*Buffer))
Grüße
Ich habe keine Lösung, aber ich bewundere das Problem.
Re: Angemeldeter Benutzer
GetUserNameEx funktioniert analog zu GetUserName.
Ich habe doch alles gut beschrieben...
Ich möchte nicht den aktuellen Benutzernamen, sondern den Namen vom Benutzer der momentan am System angemeldet ist!
Wenn ein Benutzer ein Programm mit runas beispielsweise unter Administrator startet, dann möchte ich (bzw. das aufgerufene Programm)
wissen, welcher Benutzer am Rechner angemeldet ist und nicht unter welchem Kontext das Programm / der Prozess läuft.
Weiss denn darüber wirklich niemand Bescheid? Ich denke mit WMI könnte es gehen. Aber gibt es nicht ein einfacheres Mittel.
Ein RegDB-Eintrag oder eine API-Funktion?
-
Mittlerweile habe ich etwas erfolgversprechendes entdeckt:
Unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" gibt es einen Eintrag "AltDefaultUserName".
Hier steht auf meinen Rechner auch nach runas der gleiche Eintrag.
Ich bin mir nur nicht sicher warum der Eintrag mit "Alt" beginnt.
Vielleicht kann man sich darauf nicht 100% verlassen?
Ich habe doch alles gut beschrieben...

Ich möchte nicht den aktuellen Benutzernamen, sondern den Namen vom Benutzer der momentan am System angemeldet ist!
Wenn ein Benutzer ein Programm mit runas beispielsweise unter Administrator startet, dann möchte ich (bzw. das aufgerufene Programm)
wissen, welcher Benutzer am Rechner angemeldet ist und nicht unter welchem Kontext das Programm / der Prozess läuft.
Weiss denn darüber wirklich niemand Bescheid? Ich denke mit WMI könnte es gehen. Aber gibt es nicht ein einfacheres Mittel.
Ein RegDB-Eintrag oder eine API-Funktion?
-
Mittlerweile habe ich etwas erfolgversprechendes entdeckt:
Unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" gibt es einen Eintrag "AltDefaultUserName".
Hier steht auf meinen Rechner auch nach runas der gleiche Eintrag.
Ich bin mir nur nicht sicher warum der Eintrag mit "Alt" beginnt.
Vielleicht kann man sich darauf nicht 100% verlassen?
Re: Angemeldeter Benutzer
Hallo purebas,
möglicherweiser wird dir dieser Link helfen:
http://www.purebasic.fr/german/viewtopi ... 41#p230841
Ciao
jpd
möglicherweiser wird dir dieser Link helfen:
http://www.purebasic.fr/german/viewtopi ... 41#p230841
Ciao
jpd
PB 5.10 Windows 7 x64
Re: Angemeldeter Benutzer
ruhig, Brauner! Nicht motzen, wenn die anderen versuchen,purebas hat geschrieben:Ich habe doch alles gut beschrieben...
Dir zu helfen. WMI willste ja nicht. Deswegen halte ich die
Füsse still.
Grüße ... Kiffi
a²+b²=mc²
Re: Angemeldeter Benutzer
Neben dem o.g. RegDB-Eintrag und runas mit Option /env,
gibt es noch den Befehl "netsh diag show computer /v".
Dieser Befehl zeigt offenbar den angemeldeten UserName.
Dabei ist es egal welcher Benutzer für runas genommen wurde.
Aber eventuell geht netsh auch über WMI...
@Kiffi
OK. Anscheinend gibt es keine einfache Variante.
Dann gibt mir doch bitte ein kleines Beispiel mit WMI!
gibt es noch den Befehl "netsh diag show computer /v".
Dieser Befehl zeigt offenbar den angemeldeten UserName.
Dabei ist es egal welcher Benutzer für runas genommen wurde.
Aber eventuell geht netsh auch über WMI...
@Kiffi
OK. Anscheinend gibt es keine einfache Variante.
Dann gibt mir doch bitte ein kleines Beispiel mit WMI!
Re: Angemeldeter Benutzer
Mit folgendem Programmaufruf (das Programm soll in Windows XP und Windows
Server 2003 vorhanden sein, andere Versionen könnte man ja einmal testen),
geht es:
sondern der Name des Nutzers, der die Konsole mit "Ausführen als" gestartet hat.
Eigentlich war zur Problemlösung nur der richtige Google-Suchaufruf nötig:
http://www.pcreview.co.uk/forums/thread-517859.php
Eine WMI-Variante ist in diesem Link auch aufgeführt.
Server 2003 vorhanden sein, andere Versionen könnte man ja einmal testen),
geht es:
Unter BENUTZERNAME steht bei mir dann nicht mehr der Administrator-Name,QWINSTA.EXE console /SERVER:%COMPUTERNAME%
sondern der Name des Nutzers, der die Konsole mit "Ausführen als" gestartet hat.
Eigentlich war zur Problemlösung nur der richtige Google-Suchaufruf nötig:

Dort ist es der 10.Eintrag:Get user who started RunAs
http://www.pcreview.co.uk/forums/thread-517859.php
Eine WMI-Variante ist in diesem Link auch aufgeführt.

Zuletzt geändert von Shardik am 25.06.2010 15:19, insgesamt 2-mal geändert.