Unit WinFuncs; { Funktionen, die wichtige Windows-Pfadnamen und Bednutzernamen liefern. Autor: Simon Reinhardt } interface {AddBackSlash erweitert einen Pfadnamen um einen abschließenden Backslash:} function AddBackSlash(PathName:string):string; {IsWindowsNT ergibt true, wenn das Betriebsystem Windows NT ist:} function IsWindowsNT:boolean; {ProductID gibt die Seriennummer der Windows-Installation zurück:} function ProductID:string; {OwnerName gibt den Eignernamen der Windows-Installation zurück:} function OwnerName:string; {UserName gibt den Namen des aktuell angemeldeten Benutzers zurück:} function UserName:string; {WindowsDirectory gibt den Pfad zurück, in dem Windows installiert ist:} function WindowsDirectory:string; {SystemDirectory gibt den Pfad des Windows-Systemverzeichnisses zurück:} function SystemDirectory:string; {ProgFilesDirectory liefert das Verzeichnis für Programme:} function ProgFilesDirectory:string; {CommonFilesDir liefert den Pfad für gemeinsame Dateien:} function CommonFilesDir:string; {ConfigPath liefert den Pfad für Windows-Konfigurationsdateien:} function ConfigPath:string; {DevicePath liefert den Pfad für Windows-Gerätedateien (.inf):} function DevicePath:string; {MediaPath liefert den Pfad für Windows-Mediendateien:} function MediaPath:string; {FavoritesPath liefert den Pfad für Internet Explorer-Favoriten:} function FavoritesPath:string; implementation uses Windows, SysUtils, Registry; function AddBackSlash(PathName:string):string; begin if (length(PathName)>0) and (PathName[length(PathName)]<>'\') then Result:=PathName+'\' else Result:=PathName; end; {AddBackSlash} function IsWindowsNT:boolean; var OsVinfo : TOSVERSIONINFO; begin ZeroMemory(@OsVinfo,sizeOf(OsVinfo)); OsVinfo.dwOSVersionInfoSize := sizeof(TOSVERSIONINFO); if GetVersionEx(OsVinfo) then Result:=OsVinfo.dwPlatformId = VER_PLATFORM_WIN32_NT else Result:=false; end; {IsWindowsNT} function ProductID:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_LOCAL_MACHINE; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false); if Res then begin Result:=Reg.ReadString('ProductId'); Reg.CloseKey; end else Result:='0'; finally Reg.Free; end; end; {ProductID} function OwnerName:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_LOCAL_MACHINE; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false); if Res then begin Result:=Reg.ReadString('RegisteredOwner'); Reg.CloseKey; end else Result:=''; finally Reg.Free; end; end; {OwnerName} function UserName:string; var UName : PChar; USize : DWord; begin USize:=100; UName:=StrAlloc(USize); try GetUserName(UName,USize); Result:=string(UName); finally StrDispose(UName); end; end; {UserName} function WindowsDirectory:string; var WinDir : PChar; begin WinDir:=StrAlloc(Max_Path); try GetWindowsDirectory(WinDir,Max_Path); Result:=AddBackSlash(String(WinDir)); finally StrDispose(WinDir); end; end; {WindowsDirectory} function SystemDirectory:string; var SysDir : PChar; begin SysDir:=StrAlloc(Max_Path); try GetSystemDirectory(SysDir,Max_Path); Result:=AddBackSlash(String(SysDir)) finally StrDispose(SysDir); end; end; {SystemDirectory} function ProgFilesDirectory:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_LOCAL_MACHINE; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false); if Res then begin Result:=AddBackSlash(Reg.ReadString('ProgramFilesDir')); Reg.CloseKey; end else Result:=''; finally Reg.Free; end; end; {ProgFilesDirectory} function CommonFilesDir:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_LOCAL_MACHINE; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false); if Res then begin Result:=AddBackSlash(Reg.ReadString('CommonFilesDir')); Reg.CloseKey; end else Result:=''; finally Reg.Free; end; end; function ConfigPath:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_LOCAL_MACHINE; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false); if Res then begin Result:=AddBackSlash(Reg.ReadString('ConfigPath')); Reg.CloseKey; end else Result:=''; finally Reg.Free; end; end; function DevicePath:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_LOCAL_MACHINE; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false); if Res then begin Result:=AddBackSlash(Reg.ReadString('DevicePath')); Reg.CloseKey; end else Result:=''; finally Reg.Free; end; end; function MediaPath:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_LOCAL_MACHINE; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion',false); if Res then begin Result:=AddBackSlash(Reg.ReadString('MediaPath')); Reg.CloseKey; end else Result:=''; finally Reg.Free; end; end; function FavoritesPath:string; var Reg : TRegistry; Res : boolean; begin Reg:=TRegistry.Create; try Reg.Rootkey:=HKEY_CURRENT_USER; if IsWindowsNT then Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Explorer\Shell Folders',false) else Res:=Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',false); if Res then begin Result:=AddBackSlash(Reg.ReadString('Favorites')); Reg.CloseKey; end else Result:=''; finally Reg.Free; end; end; {FavoritesPath} end.