Как найти системные папки Windows?
Материал из DRKB
Как найти системные папки Windows?[править | править код]
type
TSystemPath = (Desktop, StartMenu, Programs, Startup, Personal, Winroot, WinSys);
implementation
function GetSystemPath(SystemPath: TSystemPath): string;
var
p: PChar;
begin
with TRegistry.Create do
begin
try
RootKey := HKEY_CURRENT_USER;
OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', True);
case SystemPath of
Desktop: Result := ReadString('Desktop');
StartMenu: Result := ReadString('Start Menu');
Programs: Result := ReadString('Programs');
Startup: Result := ReadString('Startup');
Personal: Result := ReadString('Personal');
Winroot:
begin
GetMem(p, 255);
GetWindowsDirectory(p, 254);
Result := StrPas(p);
Freemem(p);
end;
WinSys:
begin
GetMem(p, 255);
GetSystemDirectory(p, 254);
Result := StrPas(p);
Freemem(p);
end;
end;
finally
CloseKey();
Free();
end;
end;
if (Result <> '') and (Result[Length(Result)] <> '\') then
Result := Result + '\';
end;
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01658
uses Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
ts: TStrings;
i: Integer;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;
reg.LazyWrite := False;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders', False);
ts := TStringList.Create;
reg.GetValueNames(ts);
for i := 0 to ts.Count -1 do
Memo1.Lines.Add(ts.Strings[i] + ' = ' + reg.ReadString(ts.Strings[i]));
ts.Free;
reg.CloseKey;
reg.Free;
end;
Source: Взято с http://delphiworld.narod.ru