干脆让你看仔细了:
-------------------------------------------------------------------------------
uses ShlObj;
procedure TForm1.Button1Click(Sender: TObject);
const
Folder:array[0..34] of string=('CSIDL_DESKTOP',
'CSIDL_INTERNET',
'CSIDL_PROGRAMS',
'CSIDL_CONTROLS',
'CSIDL_PRINTERS',
'CSIDL_PERSONAL',
'CSIDL_FAVORITES',
'CSIDL_STARTUP',
'CSIDL_RECENT',
'CSIDL_SENDTO',
'CSIDL_BITBUCKET',
'CSIDL_STARTMENU',
'nil-13','nil-14','nil-15','nil-16',
'CSIDL_DESKTOPDIRECTORY',
'CSIDL_DRIVES',
'CSIDL_NETWORK',
'CSIDL_NETHOOD',
'CSIDL_FONTS',
'CSIDL_TEMPLATES',
'CSIDL_COMMON_STARTMENU',
'CSIDL_COMMON_PROGRAMS',
'CSIDL_COMMON_STARTUP',
'CSIDL_COMMON_DESKTOPDIRECTORY',
'CSIDL_APPDATA',
'CSIDL_PRINTHOOD',
'CSIDL_ALTSTARTUP','nil-30',
'CSIDL_COMMON_ALTSTARTUP',
'CSIDL_COMMON_FAVORITES',
'CSIDL_INTERNET_CACHE',
'CSIDL_COOKIES',
'CSIDL_HISTORY');
var
PIIDList
ItemIDList;
PPath:array[0..255]of Char;
i:integer;
begin
for i:=0 to 34 do
begin
ZeroMemory(@PPath,256);
SHGetSpecialFolderLocation(self.Handle,i,PIIDList);
SHGetPathFromIDList(PIIDList,@PPath);
Memo1.Lines.Add(Folder
+' : '+StrPas(@PPath));
end;
end;