![]() |
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:
Und bei der Registry dann genauso, also den Autorun Pfad+Benutzer
var
Benutzer: String; begin Ini := TIniFile.Create(APath+Benutzer+'.ini') {...} end; 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. |
Re: Welcher Benutzer ist angemeldet?
|
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:
Als CSIDL gibst du CSIDL_LOCAL_APPDATA an, entspricht $1C, falls die Konstante nicht bekannt sein sollte.
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; Ansonsten den aktuell angemeldeten User bekommst du mit:
Delphi-Quellcode:
Willst du alle Benutzer haben, musst du auf spezielle NT-API Funktionen zurückgreifen. Eien Implementation dafür findest du auf meiner Seite:
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; ![]() |
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: |
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...
|
Re: Welcher Benutzer ist angemeldet?
Moin Luckie,
Zitat:
Wennm, dann sollte man den Profilpfad mittels ![]() Es wird zwar nur selten vorkommen, aber sollte mal ein Account umbenannt werden, so ändert sich zwar der Username, aber nicht der Profilpfad. |
Re: Welcher Benutzer ist angemeldet?
Zitat:
Wie man den Benutzernamen bekommt, habe ich doch nur noch zusätzlich gepostet, weil er das wissen wollte. |
Re: Welcher Benutzer ist angemeldet?
kannst ja hier ma schauen:
![]() |
Re: Welcher Benutzer ist angemeldet?
Zitat:
|
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 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz