Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Welcher Benutzer ist angemeldet? (https://www.delphipraxis.net/14653-welcher-benutzer-ist-angemeldet.html)

F.W. 13. Jan 2004 13:17


Welcher Benutzer ist angemeldet?
 
Mein Programm verfügt übder eine IniDatei, in die es alle möglichen Einstellungen speichert. Aber es hat auch eine Einstellung in der Registry: Eine Autorunfuncktion.

Ich möchte, dass es je nach Benutzer eine andere Ini lädt(damit jeder seine eigenen Einstelungen hat) und dass es dann auch nur bei einigen Benutzern mit startet.
Ich habe mir das so vorgestellt:

Delphi-Quellcode:
var
  Benutzer: String;
begin
Ini := TIniFile.Create(APath+Benutzer+'.ini')
    {...}
end;
Und bei der Registry dann genauso, also den Autorun Pfad+Benutzer

1.Wie bekomme ich den Benutzernamen raus?
2.Und wie bekomme ich alle existierenden Benutzer?
3.Wie könnte ich das mit der Registry machen, da hab ich nämlich noch keine Erfahrung.

choose 13. Jan 2004 13:25

Re: Welcher Benutzer ist angemeldet?
 
Hallo F.W.,

vielleicht hilft Dir das schon weiter? Hier im Forum suchenangemeldet benutzer

Luckie 13. Jan 2004 13:27

Re: Welcher Benutzer ist angemeldet?
 
Schreib in der Registry in den HKCU Zweig, der ist für jeden Benutzer spezifisch. Und leg die Ini-Datei nicht im Programm-Order ab, sondern unter "Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten\<Dein Programmname>" dann hat jeder User seine eigene Ini-Datei und du hast keine Probleme mit Benutzern, die nicht in das Programmverzeichnis schreiben dürfen. Den Ordner bekommst du mit:
Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var
  pidl: PItemIdList;
  FolderPath: string;
  SystemFolder: Integer;
begin
  FolderPath := '';
  SystemFolder := CSIDL;
  if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
  begin
    SetLength(FolderPath, MAX_PATH);
    SHGetPathFromIDList(pidl, PChar(FolderPath));
    SetLength(FolderPath, lstrlen(PChar(FolderPath)));
  end;
  Result := FolderPath;
end;
Als CSIDL gibst du CSIDL_LOCAL_APPDATA an, entspricht $1C, falls die Konstante nicht bekannt sein sollte.

Ansonsten den aktuell angemeldeten User bekommst du mit:
Delphi-Quellcode:
function GetUser: string;
const
  UNLEN = 256; // Maximum user name length (LmCons.h)
var
  Size: DWORD;
begin
  Size := UNLEN + 1;
  SetLength(Result, Size);
  if GetUserName(PChar(Result), Size) then
    SetLength(Result, Size)
  else
    Result := '';
end;
Willst du alle Benutzer haben, musst du auf spezielle NT-API Funktionen zurückgreifen. Eien Implementation dafür findest du auf meiner Seite: http://www.luckie-online.de/downloads/ -> NTUser.

himitsu 13. Jan 2004 13:46

Re: Welcher Benutzer ist angemeldet?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du kannst auch den Dateinamen und das Registrieverzeichnis gleichlassen.

Denn es gibt in der Registriebereiche und Verzeichnisse, von denen normalerweise Jederbenutzer seine Eigenen hat.

In der Registrie ist das z.B. HKEY_CURRENT_USER
Und auf der Festplatte CSIDL_AppData (siehe Beispielprog)

Wenn du da eine Datei/Daten reinmachst, hat jeder Benutzer seine eigenen Einstellungen, bei dennoch gleichen Pfaden.

[add]
mist, Luckie war schneller - mann sollte halt nichts nebenbei machen :roll:

alcaeus 13. Jan 2004 14:27

Re: Welcher Benutzer ist angemeldet?
 
Es gibt die so genannten Umgebungsvariablen, in denen Informationen über das System gschrieben werden. Ich habe irgendwann eine Unit heruntergeladen, um auf diese Informationen zugreifen zu können. Falls du Interesse hast, meld dich per PN, ich bin etwas zu faul zum Suchen...

Christian Seehase 13. Jan 2004 18:42

Re: Welcher Benutzer ist angemeldet?
 
Moin Luckie,

Zitat:

Zitat von Luckie
unter "Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten\<Dein Programmname>"

das wäre aber etwas gefährlich.

Wennm, dann sollte man den Profilpfad mittels Hier im Forum suchenSHGetSpecialFolderPath und CSIDL_PROFILE bzw., wie Himitsu schon sagte, CSIDL_APPDATA ermitteln, oder, soweit vorhanden die Umgebungsvariable USERPROFILE auslesen.
Es wird zwar nur selten vorkommen, aber sollte mal ein Account umbenannt werden, so ändert sich zwar der Username, aber nicht der Profilpfad.

Luckie 14. Jan 2004 02:05

Re: Welcher Benutzer ist angemeldet?
 
Zitat:

Zitat von Christian Seehase
Moin Luckie,

Zitat:

Zitat von Luckie
unter "Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten\<Dein Programmname>"

das wäre aber etwas gefährlich.

Och Christian. Ich habe doch extra noch gepostet wie man den Pfad unabhängig vom Benutzernamen für den Benutzer ermittelt. Den Pfad habe ich doch nur hingeschrieben, damit er sieht, was ich meine, wo er speichern soll.

Wie man den Benutzernamen bekommt, habe ich doch nur noch zusätzlich gepostet, weil er das wissen wollte.

markon 14. Jan 2004 07:43

Re: Welcher Benutzer ist angemeldet?
 
kannst ja hier ma schauen: http://www.delphipraxis.net/internal...highlight=user

Luckie 14. Jan 2004 07:45

Re: Welcher Benutzer ist angemeldet?
 
Zitat:

Zitat von markon

Was habe ich denn da oben anderes gepostet. :roll:

markon 14. Jan 2004 08:47

Re: Welcher Benutzer ist angemeldet?
 
@ luckie
sorry deswegen.. aber schau mal bitte auf die zeit.. wird sich wahrscheinlich zeitlich überschnitten haben..


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz