Username ermitteln (Kein "Getusername_"!)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Rings hat geschrieben:Einfach unter benutzerkonten den Namen ändern
Das ist natürlich die einfachste Möglichkeit, die User-ID ("P46789" bei CNESM) und den User-Namen (Beispiel: "Max Mustermann") gleich zu setzen. Aber erzähle dies einmal unseren Administratoren, die mehr als 2300 Anwender verwalten müssen. Wenn da jeder Anwender (oder Anwendungsprogrammierer) seine Sonderwünsche hätte... :lol:
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag von Rings »

Shardik hat geschrieben:
Rings hat geschrieben:Einfach unter benutzerkonten den Namen ändern
Das ist natürlich die einfachste Möglichkeit, die User-ID ("P46789" bei CNESM) und den User-Namen (Beispiel: "Max Mustermann") gleich zu setzen. Aber erzähle dies einmal unseren Administratoren, die mehr als 2300 Anwender verwalten müssen. Wenn da jeder Anwender (oder Anwendungsprogrammierer) seine Sonderwünsche hätte... :lol:
Nein, ich meinte man sieht dann beide Namen.
Also den Angelegten und den vom User veränderten.
So wie es cnesm meint.
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Rings hat geschrieben:Nein, ich meinte man sieht dann beide Namen.
Also den Angelegten und den vom User veränderten.
So wie es cnesm meint.
Damit wir nicht aneinander vorbei reden:

Wenn man als Administrator über Start/Systemsteuerung/Benutzerkonten einen definierten User auswählt, kann man den Namen ändern, der im Anmeldebildschirm angezeigt wird. Dies ist im Microsoft-Speak der "FullName".

In vielen Firmennetzwerken ist aber die Anmeldung über die Willkommensseite mit Auflistung der eingerichteten User und die schnelle Benutzerumschaltung aus Sicherheitsgründen abgeschaltet (über Systemsteuerung/Benutzerkonten/Art der Benutzeranmeldung ändern; ein Admin regelt dies über eine entsprechende Policy-Einstellung).

Melde ich mich aber über die "abgespeckte" Anmeldung oder ein Novell-Login an, dann muß ich die User-ID ("Name" in Microsoftisch, wahrscheinlich muß CNESM hier "P46789" eingeben) eintippen. Die User-ID erscheint bei dieser Anmeldung nirgendwo, sondern man muß sie bei jeder Anmeldung aus Sicherheitsgründen neu eintippen und sie ist relativ kryptisch...

Klarer wird dies, wenn man die Management-Konsole startet und "Lokale Benutzer und Gruppen" auswählt und dann "Benutzer" (am besten durch Rechtsklick auf Arbeitsplatz und Auswahl von "Verwalten"). Wenn man auf der linken Seite "Benutzer" aktiviert hat, erscheinen auf der rechten Seite die Einträge "Name", "Vollständiger Name" und "Beschreibung". "Name" müßte dann bei CNESM "P46789" lauten (von mir User-ID genannt), "Vollständiger Name" aber "Max Mustermann" (FullName).

Außerdem muß man davon ausgehen, daß im Firmenumfeld der normale Anwender mitnichten Administrator-Rechte besitzt und einfach einmal seinen Anmeldenamen ändern kann...:wink:
Ich habe es gerade extra noch einmal als User mit eingeschränkten Rechten ausprobiert: ich konnte wie erwartet nur mein Foto oder mein Kennwort ändern, aber nicht meinen Namen ("FullName").


CNESM,

ich habe mein 2.Beispiel jetzt auch in meinem Heimnetzwerk getestet, noch einen kleinen Fehler gefunden (als Länge des Unicode-Strings muß 128 statt 255 angegeben werden) und auch direkt in meinem 2.Beispiel korrigiert. Dieses korrigierte 2.Beispiel läuft jetzt auch korrekt bei mir zuhause, d.h. ohne DNS- oder Anmelde-Server, nur mit einer FritzBox als DHCP-Server.
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

Hi,

@ Shardik

Also das Beispiel gibt mir ebenfalls nur die ID aus, der Username ist weiterhin leer.

@ Rings

Zu Hause mit Admin-Rechte wäre das ne Option, aber hier habe ich keine Adminrechte und damit verbunden keine Möglichkeit, dies anzupassen. Auch die Option "Arbeitsplatz" -> "Verwalten" ist bei uns nur mit Adminrechten möglich.

@ All

Wenn ich eine Datei mit einem rechten Mausklich anklicke und dort auf "Eigenschaften" gehe, finde ich unter "Sicherheit" und der Option "Gruppen- und Benutzernamen" meine ID und meinen Namen. Bei sieht das wie folgt aus:
SYSTEM
Max, Mustermann (P46789@asd.com)
Administratoren (HH00408D\Administratoren)
Vielleicht gibt das irgendwie Aufschluss für einen Lösungsansatz...
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

registry ?

HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon

enthält so einiges, was eventuell verwertbar sein könnte.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

CNESM hat geschrieben:Hi,

@ Shardik

Also das Beispiel gibt mir ebenfalls nur die ID aus, der Username ist weiterhin leer.
Kann es sein, dass der String in Unicode oder UTF8/16/32 ist und nicht in ASCII, sodass der String leer ist?

@bobobo:

Kann man auf die Registry ohne Admin-Rechte zugreifen?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

kommt drauf an
lesen sollte gehen

versuch es doch mal

(im übrigen kann man die registry sogar von entfernten rechnern tlw. auslesen -- rpc und so)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

> Kann man auf die Registry ohne Admin-Rechte zugreifen?
Lesen geht ohne probleme, man sollte aber drauf achten, auch nur rechte
zum lesen anzufordern, was bei manchen CodeSnippets hier nicht der Fall ist,
also: #KEY_READ und nicht #KEY_ALL_ACCESS
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

DarkDragon hat geschrieben:Kann es sein, dass der String in Unicode oder UTF8/16/32 ist und nicht in ASCII, sodass der String leer ist?
FullName wird als Unicode-String ausgelesen und mit WideCharToMultiByte() in einen ASCII-String umgewandelt...:wink:


DarkDragon, bobobo und ts-soft:

Ich fürchte, daß die Registry keine große Hilfe sein wird. :roll:
Ich habe gerade einmal die komplette lokale Registry nach meinem Vor- und Nachnamen durchsucht - Fehlanzeige (außer in einem Novell Groupwise-Eintrag für mein Adressbuch; nur wenn CNESM Novell Groupwise einsetzt, wäre dies eine Möglichkeit). Wahrscheinlich ist der FullName in unserem Firmennetzwerk nur auf dem Anmelde-Server hinterlegt. Bei Ausführung meiner beiden Code-Beispiele erhalte ich aber korrekt meine User-ID (z.B. wie "P46789") und meinen User-Namen (Vor- und Nachname) angezeigt. Ich fürchte schon fast, daß es mit CNESMs Vista zusammenhängt, weil es bei mir unter XP sowohl im Firmennetzwerk als auch im Heimnetzwerk problemlos funktioniert.
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Ich habe noch eine andere Möglichkeit gefunden, Informationen über einen Benutzer zu ermitteln. Und zwar in der Eingabeaufforderung:

Code: Alles auswählen

net user P46789
In PureBASIC 4.20 liefert das folgende Code-Beispiel bei mir unter Windows XP SP2 ebenfalls den voll qualifizierten Benutzernamen (FullName):

Code: Alles auswählen

Define FullName.S
Define Output.S
Define ProgramID.I
Define UserID.S = "xxxxxx" ; <-- Bitte User-ID eintragen

ProgramID = RunProgram("Net", " User " + UserID, "", #PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)

If ProgramID  
  While ProgramRunning(ProgramID)
    Output + ReadProgramString(ProgramID) + #CR$
  Wend

  FullName = StringField(Output, 2, #CR$)
  Debug Trim(Mid(FullName, FindString(UCase(FullName), "NAME", 1) + 4))
EndIf
Antworten