Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Путь к папке My Computer

01.01.2007
uses
 
ActiveX, ShlObj;
 
procedure TForm1
.Button1Click(Sender: TObject);
var
  pShell
, ShellFolder: IShellFolder;
  pidl
: PITEMIDLIST;
 
PMalloc: IMalloc;
  sName
: string;
 
EnumIDList: IEnumIDList;
  pceltFetched
: ULONG;
  lpName
: TStrRet;
  slDirectories
: TStringList;
begin
  slDirectories
:= TStringList.Create;
 
try
   
SHGetDesktopFolder(ShellFolder);
   
SHGetSpecialFolderLocation(0,CSIDL_DRIVES, pidl);
   
SHGetMalloc(PMalloc);
   
ShellFolder.BindToObject(pidl, nil, IID_IShellFolder, Pointer(pShell));
    pShell
.EnumObjects(0,SHCONTF_FOLDERS, EnumIDList);
   
while EnumIDList.Next(1,pidl, pceltFetched) = S_ok do
   
begin
      pceltFetched
:= 0;
      lpName
.uType := 0;
      pShell
.GetDisplayNameOf(pidl, SHGDN_FORPARSING, lpName);
      sName
:= lpName.pOleStr;
      slDirectories
.Add(sName);
   
end;
    ListBox1
.Items.Assign(sldirectories);
 
finally
    pMalloc
._Release;
    pMalloc
:= nil;
    slDirectories
.Free;
 
end;

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php