28 #define WIN32_NO_STATUS 42 #include <wine/unicode.h> 70 static const WCHAR ProductOptions[] =
L"SYSTEM\\CurrentControlSet\\Control\\ProductOptions";
75 static DWORD s_dwProductType = 0;
77 if (s_dwProductType != 0)
79 *ProductType = s_dwProductType;
89 cbValue =
sizeof(szValue);
95 else if (
lstrcmpW(szValue,
L"LanmanNT") == 0)
99 s_dwProductType = *ProductType;
130 TRACE(
"(%s)\n",lpszPath);
133 return (
LPSTR)(*lpszPath?(lpszPath+1):lpszPath);
144 return (
LPWSTR)(*lpszPath?(lpszPath+1):lpszPath);
176 TRACE(
"%s\n", pszPath);
230 static const char *
const lpszExtensions[] =
231 {
"exe",
"com",
"pif",
"cmd",
"bat",
"scf",
"scr",
NULL };
233 TRACE(
"path=%s\n",lpszPath);
235 for(
i=0; lpszExtensions[
i];
i++)
248 static const WCHAR lpszExtensions[][4] =
249 {{
'e',
'x',
'e',
'\0'}, {
'c',
'o',
'm',
'\0'}, {
'p',
'i',
'f',
'\0'},
250 {
'c',
'm',
'd',
'\0'}, {
'b',
'a',
't',
'\0'}, {
's',
'c',
'f',
'\0'},
251 {
's',
'c',
'r',
'\0'}, {
'\0'} };
255 for(
i=0; lpszExtensions[
i][0];
i++)
328 FIXME(
"%p %u %s %s %s stub\n",
329 lpszBuffer, dwBuffSize,
debugstr_a(lpszShortName),
344 FIXME(
"%p %u %s %s %s stub\n",
345 lpszBuffer, dwBuffSize,
debugstr_w(lpszShortName),
361 return PathMakeUniqueNameW(lpszBuffer,dwBuffSize, lpszShortName,lpszLongName,lpszPathName);
362 return PathMakeUniqueNameA(lpszBuffer,dwBuffSize, lpszShortName,lpszLongName,lpszPathName);
376 file = longname ? longname : shortname;
386 static const WCHAR fmtW[] = {
'%',
's',
' ',
'(',
'%',
'd',
')',
'%',
's',0};
481 FIXME(
"%s\n",pszPath);
536 FIXME(
"%s %p 0x%04x 0x%04x stub\n",
537 lpszPath, lpszBuff, dwBuffSize,
dwFlags);
538 if(!lpszPath)
return -1;
539 if(lpszBuff)
strcpy(lpszBuff, lpszPath);
552 FIXME(
"(%s, %p, 0x%04x, 0x%04x) stub\n",
554 if(!lpszPath)
return -1;
555 if(lpszBuff)
strcpyW(lpszBuff, lpszPath);
577 static const WCHAR szCurrentVersion[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\0'};
578 static const WCHAR Administrative_ToolsW[] = {
'A',
'd',
'm',
'i',
'n',
'i',
's',
't',
'r',
'a',
't',
'i',
'v',
'e',
' ',
'T',
'o',
'o',
'l',
's',
'\0'};
581 static const WCHAR AppData_LocalLowW[] = {
'A',
'p',
'p',
'D',
'a',
't',
'a',
'\\',
'L',
'o',
'c',
'a',
'l',
'L',
'o',
'w',
'\0'};
582 static const WCHAR Application_DataW[] = {
'A',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
' ',
'D',
'a',
't',
'a',
'\0'};
585 static const WCHAR CD_BurningW[] = {
'C',
'D',
' ',
'B',
'u',
'r',
'n',
'i',
'n',
'g',
'\0'};
586 static const WCHAR Common_Administrative_ToolsW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'A',
'd',
'm',
'i',
'n',
'i',
's',
't',
'r',
'a',
't',
'i',
'v',
'e',
' ',
'T',
'o',
'o',
'l',
's',
'\0'};
587 static const WCHAR Common_AppDataW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'A',
'p',
'p',
'D',
'a',
't',
'a',
'\0'};
588 static const WCHAR Common_DesktopW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'D',
'e',
's',
'k',
't',
'o',
'p',
'\0'};
589 static const WCHAR Common_DocumentsW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'D',
'o',
'c',
'u',
'm',
'e',
'n',
't',
's',
'\0'};
590 static const WCHAR Common_FavoritesW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'F',
'a',
'v',
'o',
'r',
'i',
't',
'e',
's',
'\0'};
591 static const WCHAR CommonFilesDirW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
'F',
'i',
'l',
'e',
's',
'D',
'i',
'r',
'\0'};
592 static const WCHAR CommonFilesDirX86W[] = {
'C',
'o',
'm',
'm',
'o',
'n',
'F',
'i',
'l',
'e',
's',
'D',
'i',
'r',
' ',
'(',
'x',
'8',
'6',
')',
'\0'};
593 static const WCHAR CommonMusicW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
'M',
'u',
's',
'i',
'c',
'\0'};
594 static const WCHAR CommonPicturesW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
'P',
'i',
'c',
't',
'u',
'r',
'e',
's',
'\0'};
595 static const WCHAR Common_ProgramsW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'P',
'r',
'o',
'g',
'r',
'a',
'm',
's',
'\0'};
596 static const WCHAR Common_StartUpW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'S',
't',
'a',
'r',
't',
'U',
'p',
'\0'};
597 static const WCHAR Common_Start_MenuW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'S',
't',
'a',
'r',
't',
' ',
'M',
'e',
'n',
'u',
'\0'};
598 static const WCHAR Common_TemplatesW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'T',
'e',
'm',
'p',
'l',
'a',
't',
'e',
's',
'\0'};
599 static const WCHAR CommonVideoW[] = {
'C',
'o',
'm',
'm',
'o',
'n',
'V',
'i',
'd',
'e',
'o',
'\0'};
615 static const WCHAR Local_AppDataW[] = {
'L',
'o',
'c',
'a',
'l',
' ',
'A',
'p',
'p',
'D',
'a',
't',
'a',
'\0'};
617 static const WCHAR Local_Settings_Application_DataW[] = {
'L',
'o',
'c',
'a',
'l',
' ',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',
'\\',
'A',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
' ',
'D',
'a',
't',
'a',
'\0'};
619 static const WCHAR Local_Settings_CD_BurningW[] = {
'L',
'o',
'c',
'a',
'l',
' ',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',
'\\',
'A',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
' ',
'D',
'a',
't',
'a',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'C',
'D',
' ',
'B',
'u',
'r',
'n',
'i',
'n',
'g',
'\0'};
621 static const WCHAR Local_Settings_HistoryW[] = {
'L',
'o',
'c',
'a',
'l',
' ',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',
'\\',
'H',
'i',
's',
't',
'o',
'r',
'y',
'\0'};
622 static const WCHAR Local_Settings_Temporary_Internet_FilesW[] = {
'L',
'o',
'c',
'a',
'l',
' ',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',
'\\',
'T',
'e',
'm',
'p',
'o',
'r',
'a',
'r',
'y',
' ',
'I',
'n',
't',
'e',
'r',
'n',
'e',
't',
' ',
'F',
'i',
'l',
'e',
's',
'\0'};
623 static const WCHAR Microsoft_Windows_GameExplorerW[] = {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'G',
'a',
'm',
'e',
'E',
'x',
'p',
'l',
'o',
'r',
'e',
'r',
'\0'};
624 static const WCHAR Microsoft_Windows_LibrariesW[] = {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'L',
'i',
'b',
'r',
'a',
'r',
'i',
'e',
's',
'\0'};
625 static const WCHAR Microsoft_Windows_RingtonesW[] = {
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'R',
'i',
'n',
'g',
't',
'o',
'n',
'e',
's',
'\0'};
627 static const WCHAR Music_PlaylistsW[] = {
'M',
'u',
's',
'i',
'c',
'\\',
'P',
'l',
'a',
'y',
'l',
'i',
's',
't',
's',
'\0'};
628 static const WCHAR Music_Sample_MusicW[] = {
'M',
'u',
's',
'i',
'c',
'\\',
'S',
'a',
'm',
'p',
'l',
'e',
' ',
'M',
'u',
's',
'i',
'c',
'\0'};
629 static const WCHAR Music_Sample_PlaylistsW[] = {
'M',
'u',
's',
'i',
'c',
'\\',
'S',
'a',
'm',
'p',
'l',
'e',
' ',
'P',
'l',
'a',
'y',
'l',
'i',
's',
't',
's',
'\0'};
632 static const WCHAR My_PicturesW[] = {
'M',
'y',
' ',
'P',
'i',
'c',
't',
'u',
'r',
'e',
's',
'\0'};
639 static const WCHAR Pictures_Sample_PicturesW[] = {
'P',
'i',
'c',
't',
'u',
'r',
'e',
's',
'\\',
'S',
'a',
'm',
'p',
'l',
'e',
' ',
'P',
'i',
'c',
't',
'u',
'r',
'e',
's',
'\0'};
640 static const WCHAR Pictures_Slide_ShowsW[] = {
'P',
'i',
'c',
't',
'u',
'r',
'e',
's',
'\\',
'S',
'l',
'i',
'd',
'e',
' ',
'S',
'h',
'o',
'w',
's',
'\0'};
644 static const WCHAR Program_FilesW[] = {
'P',
'r',
'o',
'g',
'r',
'a',
'm',
' ',
'F',
'i',
'l',
'e',
's',
'\0'};
645 static const WCHAR Program_Files_Common_FilesW[] = {
'P',
'r',
'o',
'g',
'r',
'a',
'm',
' ',
'F',
'i',
'l',
'e',
's',
'\\',
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'F',
'i',
'l',
'e',
's',
'\0'};
647 static const WCHAR Program_Files_x86W[] = {
'P',
'r',
'o',
'g',
'r',
'a',
'm',
' ',
'F',
'i',
'l',
'e',
's',
' ',
'(',
'x',
'8',
'6',
')',
'\0'};
648 static const WCHAR Program_Files_x86_Common_FilesW[] = {
'P',
'r',
'o',
'g',
'r',
'a',
'm',
' ',
'F',
'i',
'l',
'e',
's',
' ',
'(',
'x',
'8',
'6',
')',
'\\',
'C',
'o',
'm',
'm',
'o',
'n',
' ',
'F',
'i',
'l',
'e',
's',
'\0'};
649 static const WCHAR ProgramFilesDirW[] = {
'P',
'r',
'o',
'g',
'r',
'a',
'm',
'F',
'i',
'l',
'e',
's',
'D',
'i',
'r',
'\0'};
650 static const WCHAR ProgramFilesDirX86W[] = {
'P',
'r',
'o',
'g',
'r',
'a',
'm',
'F',
'i',
'l',
'e',
's',
'D',
'i',
'r',
' ',
'(',
'x',
'8',
'6',
')',
'\0'};
658 static const WCHAR Saved_GamesW[] = {
'S',
'a',
'v',
'e',
'd',
' ',
'G',
'a',
'm',
'e',
's',
'\0'};
663 static const WCHAR Start_MenuW[] = {
'S',
't',
'a',
'r',
't',
' ',
'M',
'e',
'n',
'u',
'\0'};
665 static const WCHAR Start_Menu_ProgramsW[] = {
'S',
't',
'a',
'r',
't',
' ',
'M',
'e',
'n',
'u',
'\\',
'P',
'r',
'o',
'g',
'r',
'a',
'm',
's',
'\0'};
666 static const WCHAR Start_Menu_Admin_ToolsW[] = {
'S',
't',
'a',
'r',
't',
' ',
'M',
'e',
'n',
'u',
'\\',
'P',
'r',
'o',
'g',
'r',
'a',
'm',
's',
'\\',
'A',
'd',
'm',
'i',
'n',
'i',
's',
't',
'r',
'a',
't',
'i',
'v',
'e',
' ',
'T',
'o',
'o',
'l',
's',
'\0'};
667 static const WCHAR Start_Menu_StartupW[] = {
'S',
't',
'a',
'r',
't',
' ',
'M',
'e',
'n',
'u',
'\\',
'P',
'r',
'o',
'g',
'r',
'a',
'm',
's',
'\\',
'S',
't',
'a',
'r',
't',
'U',
'p',
'\0'};
672 static const WCHAR UsersPublicW[] = {
'U',
's',
'e',
'r',
's',
'\\',
'P',
'u',
'b',
'l',
'i',
'c',
'\0'};
674 static const WCHAR Videos_Sample_VideosW[] = {
'V',
'i',
'd',
'e',
'o',
's',
'\\',
'S',
'a',
'm',
'p',
'l',
'e',
' ',
'V',
'i',
'd',
'e',
'o',
's',
'\0'};
677 static const WCHAR AllUsersProfileW[] = {
'%',
'A',
'L',
'L',
'U',
'S',
'E',
'R',
'S',
'P',
'R',
'O',
'F',
'I',
'L',
'E',
'%',
'\0'};
681 static const WCHAR UserProfileW[] = {
'%',
'U',
'S',
'E',
'R',
'P',
'R',
'O',
'F',
'I',
'L',
'E',
'%',
'\0'};
682 static const WCHAR SystemDriveW[] = {
'%',
'S',
'y',
's',
't',
'e',
'm',
'D',
'r',
'i',
'v',
'e',
'%',
'\0'};
684 static const WCHAR ProfileListW[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
' ',
'N',
'T',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\\',
'P',
'r',
'o',
'f',
'i',
'l',
'e',
'L',
'i',
's',
't',0};
685 static const WCHAR ProfilesDirectoryW[] = {
'P',
'r',
'o',
'f',
'i',
'l',
'e',
's',
'D',
'i',
'r',
'e',
'c',
't',
'o',
'r',
'y',0};
686 static const WCHAR AllUsersProfileValueW[] = {
'A',
'l',
'l',
'U',
's',
'e',
'r',
's',
'P',
'r',
'o',
'f',
'i',
'l',
'e',
'\0'};
688 static const WCHAR szSHFolders[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\\',
'E',
'x',
'p',
'l',
'o',
'r',
'e',
'r',
'\\',
'S',
'h',
'e',
'l',
'l',
' ',
'F',
'o',
'l',
'd',
'e',
'r',
's',
'\0'};
689 static const WCHAR szSHUserFolders[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\\',
'E',
'x',
'p',
'l',
'o',
'r',
'e',
'r',
'\\',
'U',
's',
'e',
'r',
' ',
'S',
'h',
'e',
'l',
'l',
' ',
'F',
'o',
'l',
'd',
'e',
'r',
's',
'\0'};
692 static const WCHAR szKnownFolderDescriptions[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\\',
'E',
'x',
'p',
'l',
'o',
'r',
'e',
'r',
'\\',
'F',
'o',
'l',
'd',
'e',
'r',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',
's',
'\0'};
693 static const WCHAR szKnownFolderRedirections[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\\',
'E',
'x',
'p',
'l',
'o',
'r',
'e',
'r',
'\\',
'U',
's',
'e',
'r',
' ',
'S',
'h',
'e',
'l',
'l',
' ',
'F',
'o',
'l',
'd',
'e',
'r',
's',0};
700 CSIDL_Type_InMyDocuments,
713 #define CSIDL_CONTACTS 0x0043 714 #define CSIDL_DOWNLOADS 0x0047 715 #define CSIDL_LINKS 0x004d 716 #define CSIDL_APPDATA_LOCALLOW 0x004e 717 #define CSIDL_SAVED_GAMES 0x0062 718 #define CSIDL_SEARCHES 0x0063 744 &FOLDERID_InternetFolder,
761 &FOLDERID_ControlPanelFolder,
768 &FOLDERID_PrintersFolder,
808 &FOLDERID_RecycleBinFolder,
830 CSIDL_Type_InMyDocuments,
841 CSIDL_Type_InMyDocuments,
867 &FOLDERID_ComputerFolder,
874 &FOLDERID_NetworkFolder,
901 &FOLDERID_CommonStartMenu,
908 &FOLDERID_CommonPrograms,
919 &FOLDERID_CommonStartup,
925 &FOLDERID_PublicDesktop,
936 &FOLDERID_RoamingAppData,
949 &FOLDERID_LocalAppData,
974 &FOLDERID_InternetCache,
992 &FOLDERID_ProgramData,
1012 &FOLDERID_ProgramFiles,
1025 CSIDL_Type_InMyDocuments,
1040 &FOLDERID_SystemX86,
1047 &FOLDERID_ProgramFilesX86,
1054 &FOLDERID_ProgramFilesCommon,
1061 &FOLDERID_ProgramFilesCommonX86,
1068 &FOLDERID_CommonTemplates,
1074 &FOLDERID_PublicDocuments,
1081 &FOLDERID_CommonAdminTools,
1087 &FOLDERID_AdminTools,
1093 &FOLDERID_ConnectionsFolder,
1118 &FOLDERID_PublicMusic,
1125 &FOLDERID_PublicPictures,
1132 &FOLDERID_PublicVideos,
1139 &FOLDERID_ResourceDir,
1145 &FOLDERID_LocalizedResourcesDir,
1151 &FOLDERID_CommonOEMLinks,
1157 &FOLDERID_CDBurning,
1183 &FOLDERID_AddNewPrograms,
1189 &FOLDERID_AppUpdates,
1195 &FOLDERID_ChangeRemovePrograms,
1201 &FOLDERID_ConflictFolder,
1213 &FOLDERID_DeviceMetadataStore,
1225 &FOLDERID_DocumentsLibrary,
1231 &FOLDERID_Downloads,
1233 CSIDL_Type_InMyDocuments,
1247 &FOLDERID_GameTasks,
1253 &FOLDERID_HomeGroup,
1259 &FOLDERID_ImplicitAppShortcuts,
1265 &FOLDERID_Libraries,
1277 &FOLDERID_LocalAppDataLow,
1283 &FOLDERID_MusicLibrary,
1289 &FOLDERID_OriginalImages,
1295 &FOLDERID_PhotoAlbums,
1301 &FOLDERID_PicturesLibrary,
1307 &FOLDERID_Playlists,
1313 &FOLDERID_ProgramFilesX64,
1319 &FOLDERID_ProgramFilesCommonX64,
1331 &FOLDERID_PublicDownloads,
1337 &FOLDERID_PublicGameTasks,
1343 &FOLDERID_PublicLibraries,
1349 &FOLDERID_PublicRingtones,
1355 &FOLDERID_QuickLaunch,
1361 &FOLDERID_RecordedTVLibrary,
1367 &FOLDERID_Ringtones,
1373 &FOLDERID_SampleMusic,
1379 &FOLDERID_SamplePictures,
1385 &FOLDERID_SamplePlaylists,
1391 &FOLDERID_SampleVideos,
1397 &FOLDERID_SavedGames,
1403 &FOLDERID_SavedSearches,
1409 &FOLDERID_SEARCH_CSC,
1415 &FOLDERID_SEARCH_MAPI,
1421 &FOLDERID_SearchHome,
1427 &FOLDERID_SidebarDefaultParts,
1433 &FOLDERID_SidebarParts,
1439 &FOLDERID_SyncManagerFolder,
1445 &FOLDERID_SyncResultsFolder,
1451 &FOLDERID_SyncSetupFolder,
1457 &FOLDERID_UserPinned,
1463 &FOLDERID_UserProfiles,
1469 &FOLDERID_UserProgramFiles,
1475 &FOLDERID_UserProgramFilesCommon,
1481 &FOLDERID_UsersFiles,
1487 &FOLDERID_UsersLibraries,
1493 &FOLDERID_VideosLibrary,
1525 LPCWSTR pShellFolderPath, pUserShellFolderPath;
1526 HKEY userShellFolderKey, shellFolderKey;
1527 DWORD dwType, dwPathLen;
1534 strcpyW(shellFolderPath, userPrefix);
1537 pShellFolderPath = shellFolderPath;
1538 strcpyW(userShellFolderPath, userPrefix);
1541 pUserShellFolderPath = userShellFolderPath;
1549 if (
RegCreateKeyW(rootKey, pShellFolderPath, &shellFolderKey))
1554 if (
RegCreateKeyW(rootKey, pUserShellFolderPath, &userShellFolderKey))
1556 TRACE(
"Failed to create %s\n",
1596 TRACE(
"returning 0x%08x\n",
hr);
1609 else if ((
INT) hToken == -1)
1617 TRACE(
"_SHGetUserProfileDirectoryW returning %S\n",
szPath);
1658 FIXME(
"unsupported for user other than current or default\n");
1687 case CSIDL_Type_InMyDocuments:
1689 if (DoGetProductType(&ProductType) && ProductType ==
NtProductWinNt)
1732 ERR(
"(%d,%s), LoadString failed, missing translation?\n",
folder,
1742 TRACE(
"returning 0x%08x\n",
hr);
1783 &dwType, (
LPBYTE)pszPath, &dwPathLen) ||
1811 pszPath[dwPathLen /
sizeof(
WCHAR)] =
'\0';
1823 char InfoBuffer[64];
1835 if (UserInfo ==
NULL)
1865 const WCHAR *szValueName;
1898 if (hToken == (
HANDLE)-1)
1903 else if (hToken ==
NULL)
1909 if (userPrefix ==
NULL)
1921 szValueName = &
buffer[0];
2015 (
LPBYTE)szValue, &dwPathLen);
2019 dwPathLen /=
sizeof(
WCHAR);
2020 szValue[dwPathLen] =
'\0';
2073 if (szSrc[0] !=
'%')
2105 strcpyW(szDest, szProfilesPrefix);
2110 DWORD cchSize = cchDest;
2112 goto fallback_expand;
2135 strcpyW(szDest, szProfilesPrefix);
2139 DWORD cchSize = cchDest;
2141 goto fallback_expand;
2151 goto fallback_expand;
2163 DWORD ret = SHExpandEnvironmentStringsForUserW(hToken, szTemp, szDest, cchDest);
2174 else if (!
strcmpW( szTemp, szDest ))
break;
2183 TRACE(
"returning 0x%08x (input was %s, output is %s)\n",
hr,
2234 TRACE(
"%p,%#x,%p,%#x,%s,%p\n", hwndOwner,
nFolder, hToken,
dwFlags,
debugstr_a(pszSubPath), pszPath);
2249 if (pszSubPath && pszSubPath[0]) {
2287 TRACE(
"%p,%#x,%p,%#x,%s,%p\n", hwndOwner,
nFolder, hToken,
dwFlags,
debugstr_w(pszSubPath), pszPath);
2347 case CSIDL_Type_InMyDocuments:
2355 FIXME(
"bogus type %d, please fix\n",
type);
2384 strcpyW(pszPath, szBuildPath);
2404 ERR(
"Failed to create directory %s.\n",
debugstr_w(szBuildPath));
2409 TRACE(
"Created missing system directory %s\n",
debugstr_w(szBuildPath));
2416 static const WCHAR s_szFormat[] =
L"%%SystemRoot%%\\system32\\shell32.dll,%d";
2487 const WCHAR *szValueName;
2493 DWORD dwType, dwPathLen;
2496 TRACE(
"%p,%p,%s,%p,%u\n", hRootKey, hToken,
2497 debugstr_w(szUserShellFolderPath), folders, foldersLen);
2523 szValueName = &
buffer[0];
2581 TRACE(
"returning 0x%08x\n",
hr);
2587 static const UINT folders[] = {
2620 LPCWSTR pUserShellFolderPath, pShellFolderPath;
2625 TRACE(
"%s\n", bDefault ?
"TRUE" :
"FALSE");
2633 pUserShellFolderPath = userShellFolderPath;
2637 pShellFolderPath = shellFolderPath;
2648 pShellFolderPath, folders,
ARRAY_SIZE(folders));
2649 TRACE(
"returning 0x%08x\n",
hr);
2655 static const UINT folders[] = {
2674 TRACE(
"returning 0x%08x\n",
hr);
2750 TRACE(
"%p 0x%08x %p 0x%08x %p\n",
2819 TRACE(
"-- (new pidl %p)\n",*ppidl);
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
static HRESULT _SHRegisterCommonShellFolders(void)
BOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes)
static const WCHAR Common_DesktopW[]
static const WCHAR FavoritesW[]
static LONG PathProcessCommandA(LPCSTR lpszPath, LPSTR lpszBuff, DWORD dwBuffSize, DWORD dwFlags)
static const WCHAR UsersW[]
#define IDI_SHELL_RECENT_DOCUMENTS
static const WCHAR PublicProfileW[]
static const WCHAR ContactsW[]
BOOL WINAPI GetDefaultUserProfileDirectoryW(_Out_opt_ LPWSTR lpProfileDir, _Inout_ LPDWORD lpcchSize)
BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2)
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
static const WCHAR DocumentsW[]
static const WCHAR Microsoft_Windows_LibrariesW[]
static const WCHAR RecentW[]
LPITEMIDLIST _ILCreateDesktop(void)
#define HRESULT_FROM_WIN32(x)
static LONG PathProcessCommandW(LPCWSTR lpszPath, LPWSTR lpszBuff, DWORD dwBuffSize, DWORD dwFlags)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
static const WCHAR UserProfileW[]
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
static const WCHAR szKnownFolderRedirections[]
#define WideCharToMultiByte
static HRESULT _SHExpandEnvironmentStrings(LPCWSTR szSrc, LPWSTR szDest)
LPITEMIDLIST _ILCreatePrinters(void)
int WINAPI PathCleanupSpec(LPCWSTR lpszPathW, LPWSTR lpszFileW)
static const WCHAR FontsW[]
#define CSIDL_FLAG_DONT_VERIFY
BOOL WINAPI GetUserProfileDirectoryW(_In_ HANDLE hToken, _Out_opt_ LPWSTR lpProfileDir, _Inout_ LPDWORD lpcchSize)
#define CSIDL_COMMON_DESKTOPDIRECTORY
static const WCHAR Common_ProgramsW[]
ACPI_SIZE strlen(const char *String)
static const WCHAR CommonFilesDirW[]
#define IDI_SHELL_CONTROL_PANEL
static const WCHAR Microsoft_Windows_RingtonesW[]
#define CSIDL_COMMON_FAVORITES
#define FILE_ATTRIBUTE_SYSTEM
static HRESULT _SHGetCurrentVersionPath(DWORD dwFlags, BYTE folder, LPWSTR pszPath)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
LONG WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff, DWORD dwBuffSize, DWORD dwFlags)
#define HKEY_CURRENT_USER
static HRESULT _SHRegisterFolders(HKEY hRootKey, HANDLE hToken, LPCWSTR szUserShellFolderPath, LPCWSTR szShellFolderPath, const UINT folders[], UINT foldersLen)
#define IDI_SHELL_COMPUTER_FOLDER
BOOL WINAPI PathAppendA(LPSTR lpszPath, LPCSTR lpszAppend)
static BOOL PathMakeUniqueNameW(LPWSTR lpszBuffer, DWORD dwBuffSize, LPCWSTR lpszShortName, LPCWSTR lpszLongName, LPCWSTR lpszPathName)
#define IDS_INTERNET_CACHE
static const WCHAR SendToW[]
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID _Out_ PHANDLE Token
static const WCHAR Program_FilesW[]
static const CSIDL_DATA CSIDL_Data[]
static const WCHAR VideosW[]
#define CSIDL_COMMON_STARTUP
#define IDI_SHELL_FAVORITES
enum _CSIDL_Type CSIDL_Type
static BOOL PathQualifyA(LPCSTR pszPath)
#define ERROR_NOT_ENOUGH_MEMORY
BOOL WINAPI PathFileExistsA(LPCSTR lpszPath)
DWORD WINAPI GetLastError(VOID)
UINT WINAPI PathGetCharTypeW(WCHAR ch)
#define IDI_SHELL_MY_MOVIES
static const WCHAR OEM_LinksW[]
static const WCHAR TemplatesW[]
#define CSIDL_PROGRAM_FILES
LPVOID WINAPI SHPathGetExtensionW(LPCWSTR lpszPath, DWORD void1, DWORD void2)
#define CSIDL_COMMON_PICTURES
static const WCHAR szCurrentVersion[]
#define IDI_SHELL_PROGRAMS_FOLDER
static const WCHAR ProfilesDirectoryW[]
static __inline BOOL SHELL_OsIsUnicode(void)
#define strncmpiW(s1, s2, n)
static const WCHAR AppDataW[]
BOOL WINAPI GetVolumeInformationA(IN LPCSTR lpRootPathName, IN LPSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
BOOL WINAPI ConvertSidToStringSidW(PSID Sid, LPWSTR *StringSid)
static const WCHAR Local_AppDataW[]
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI PathRemoveFileSpecA(LPSTR lpszPath)
static const WCHAR Common_FavoritesW[]
WINE_DEFAULT_DEBUG_CHANNEL(shell)
#define CSIDL_INTERNET_CACHE
static const WCHAR ProgramsW[]
BOOL WINAPI IsLFNDriveAW(LPCVOID lpszPath)
#define CSIDL_COMMON_TEMPLATES
#define IDI_SHELL_PRINTERS_FOLDER
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI PathAppendW(LPWSTR lpszPath, LPCWSTR lpszAppend)
#define CSIDL_PROGRAM_FILESX86
static const WCHAR szSHUserFolders[]
#define CSIDL_COMMON_PROGRAMS
static const WCHAR Common_TemplatesW[]
static const WCHAR MusicW[]
static const WCHAR Music_PlaylistsW[]
#define CSIDL_MYDOCUMENTS
static const WCHAR ProgramFilesDirW[]
static const WCHAR Local_Settings_Application_DataW[]
#define CSIDL_FOLDER_MASK
enum _NT_PRODUCT_TYPE * PNT_PRODUCT_TYPE
static const WCHAR Program_Files_x86W[]
BOOL WINAPI SHGetSpecialFolderPathA(HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate)
#define IDI_SHELL_DESKTOP
LONG WINAPI RegCloseKey(HKEY hKey)
static const WCHAR Administrative_ToolsW[]
static const WCHAR PublicW[]
void WINAPI PathRemoveExtensionW(LPWSTR lpszPath)
BOOL _SHGetUserProfileDirectoryW(HANDLE hToken, LPWSTR szPath, LPDWORD lpcchPath)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
static const WCHAR Videos_Sample_VideosW[]
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI PathIsRootAW(LPCVOID lpszPath)
static HRESULT _SHRegisterUserShellFolders(BOOL bDefault)
static void PathGetShortPathW(LPWSTR pszPath)
GLenum GLuint GLenum GLsizei length
static const WCHAR AllUsersProfileW[]
static const WCHAR Common_StartUpW[]
BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath)
static const WCHAR Program_Files_x86_Common_FilesW[]
static const WCHAR Common_Start_MenuW[]
static const BOOL is_win64
#define IDS_DESKTOPDIRECTORY
#define IDI_SHELL_TSKBAR_STARTMENU
static const WCHAR UsersPublicW[]
#define CSIDL_COMMON_STARTMENU
#define IDI_SHELL_NETWORK
BOOL WINAPI IsLFNDriveW(LPCWSTR lpszPath)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
static const WCHAR Start_MenuW[]
LPITEMIDLIST _ILCreateMyComputer(void)
static const WCHAR ProgramFilesDirX86W[]
static const WCHAR Microsoft_Windows_GameExplorerW[]
static const WCHAR Common_AppDataW[]
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
#define ERROR_FILE_NOT_FOUND
static HRESULT _SHOpenProfilesKey(PHKEY pKey)
static const WCHAR Program_Files_Common_FilesW[]
#define CSIDL_COMMON_ADMINTOOLS
static const WCHAR szKnownFolderDescriptions[]
#define IDI_SHELL_FONTS_FOLDER
BOOL WINAPI IsWow64Process(IN HANDLE hProcess, OUT PBOOL Wow64Process)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
UINT WINAPI PathGetCharTypeA(UCHAR ch)
BOOL WINAPI PathIsRootW(LPCWSTR lpszPath)
static const WCHAR Pictures_Slide_ShowsW[]
#define IDI_SHELL_NETWORK_FOLDER
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
static const WCHAR StartUpW[]
static const WCHAR szAllUsers[]
#define IS_INTRESOURCE(i)
static BOOL PathResolveW(LPWSTR path, LPCWSTR *paths, DWORD flags)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static BOOL PathQualifyW(LPCWSTR pszPath)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI PathMakeUniqueNameAW(LPVOID lpszBuffer, DWORD dwBuffSize, LPCVOID lpszShortName, LPCVOID lpszLongName, LPCVOID lpszPathName)
static HRESULT _SHGetUserProfilePath(HANDLE hToken, DWORD dwFlags, BYTE folder, LPWSTR pszPath)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
static const WCHAR Common_Administrative_ToolsW[]
BOOL WINAPI PathQualifyAW(LPCVOID pszPath)
#define CSIDL_LOCAL_APPDATA
static const WCHAR SystemDriveW[]
DWORD WINAPI GetShortPathNameW(IN LPCWSTR lpszLongPath, OUT LPWSTR lpszShortPath, IN DWORD cchBuffer)
DWORD WINAPI GetShortPathNameA(IN LPCSTR lpszLongPath, OUT LPSTR lpszShortPath, IN DWORD cchBuffer)
static const WCHAR AppData_LocalLowW[]
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
BOOL PathIsExeW(LPCWSTR lpszPath)
#define FILE_ATTRIBUTE_READONLY
BOOL WINAPI IsLFNDriveA(LPCSTR lpszPath)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
#define CSIDL_COMMON_VIDEO
static void PathGetShortPathA(LPSTR pszPath)
static const WCHAR CommonFilesDirX86W[]
static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath)
static const WCHAR HistoryW[]
static const WCHAR CD_BurningW[]
static const WCHAR Start_Menu_ProgramsW[]
static HRESULT _SHGetAllUsersProfilePath(DWORD dwFlags, BYTE folder, LPWSTR pszPath)
UINT WINAPI GetSystemWow64DirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define CSIDL_COMMON_APPDATA
static const WCHAR CommonVideoW[]
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
static const WCHAR Saved_GamesW[]
static const WCHAR Start_Menu_StartupW[]
static const WCHAR CacheW[]
#define IDS_COMMON_PICTURES
static const WCHAR My_PicturesW[]
#define IDS_PROGRAM_FILES_COMMON
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
#define GetCurrentProcess()
static const WCHAR Local_Settings_CD_BurningW[]
BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath)
#define E_NOT_SUFFICIENT_BUFFER
LPWSTR WINAPI PathRemoveBackslashW(LPWSTR lpszPath)
static const WCHAR DownloadsW[]
BOOL WINAPI WritePrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR string, LPCWSTR filename)
GLsizei const GLuint * paths
#define CSIDL_PROGRAM_FILES_COMMONX86
#define CSIDL_PROGRAM_FILES_COMMON
#define CSIDL_COMMON_MUSIC
BOOL WINAPI PathIsRootA(LPCSTR lpszPath)
static const WCHAR Local_Settings_HistoryW[]
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
#define CSIDL_APPDATA_LOCALLOW
static const WCHAR DesktopW[]
LPITEMIDLIST _ILCreateNetwork(void)
static const WCHAR szDefaultProfileDirW[]
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
#define shell32_hInstance
#define IDI_SHELL_MY_MUSIC
_In_ int _In_ BOOL bCreate
#define IDI_SHELL_MY_DOCUMENTS
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define IDI_SHELL_SYSTEM_GEAR
LPSTR WINAPI PathFindExtensionA(LPCSTR lpszPath)
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
BOOL WINAPI PathResolveAW(LPVOID path, LPCVOID *paths, DWORD flags)
static BOOL PathIsExeA(LPCSTR lpszPath)
BOOL WINAPI GetAllUsersProfileDirectoryW(_Out_opt_ LPWSTR lpProfileDir, _Inout_ LPDWORD lpcchSize)
HRESULT WINAPI SHGetFolderPathA(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath)
void shell(int argc, const char *argv[])
HLOCAL NTAPI LocalFree(HLOCAL hMem)
int WINAPI SHCreateDirectoryExW(HWND hWnd, LPCWSTR path, LPSECURITY_ATTRIBUTES sec)
static LPWSTR _GetUserSidStringFromToken(HANDLE Token)
static const WCHAR ProfileListW[]
static const WCHAR LinksW[]
static const WCHAR AllUsersW[]
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
#define IDI_SHELL_NETWORK_CONNECTIONS
WINE_UNICODE_INLINE WCHAR * strcatW(WCHAR *dst, const WCHAR *src)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define CSIDL_COMMON_DOCUMENTS
static HRESULT _SHGetProfilesValue(HKEY profilesKey, LPCWSTR szValueName, LPWSTR szValue, LPCWSTR szDefault)
#define FILE_ATTRIBUTE_HIDDEN
#define IDI_SHELL_MY_PICTURES
static BOOL PathResolveA(LPSTR path, LPCSTR *paths, DWORD flags)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
#define CSIDL_FLAG_CREATE
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPCSTR pszSubPath, LPSTR pszPath)
#define MultiByteToWideChar
HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
static LPWSTR PathGetExtensionW(LPCWSTR lpszPath)
#define IDS_PROGRAM_FILES
#define CSIDL_SAVED_GAMES
static const WCHAR Common_DocumentsW[]
static const WCHAR ResourcesW[]
static const WCHAR userName[]
static const WCHAR AllUsersProfileValueW[]
static const WCHAR szSHFolders[]
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
static const WCHAR Music_Sample_PlaylistsW[]
WINE_UNICODE_INLINE int strcmpW(const WCHAR *str1, const WCHAR *str2)
enum _NT_PRODUCT_TYPE NT_PRODUCT_TYPE
static const WCHAR Application_DataW[]
char * strcpy(char *DstString, const char *SrcString)
static LPSTR PathGetExtensionA(LPCSTR lpszPath)
static const WCHAR My_VideoW[]
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
static const WCHAR Pictures_Sample_PicturesW[]
static const WCHAR NetHoodW[]
BOOL WINAPI PathIsExeAW(LPCVOID path)
struct _TOKEN_USER * PTOKEN_USER
char * cleanup(char *str)
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
static const WCHAR CookiesW[]
LPITEMIDLIST _ILCreateIExplore(void)
#define ERROR_PATH_NOT_FOUND
BOOL WINAPI PathYetAnotherMakeUniqueName(LPWSTR buffer, LPCWSTR path, LPCWSTR shortname, LPCWSTR longname)
#define MAKEINTRESOURCEW(i)
static const WCHAR Local_Settings_Temporary_Internet_FilesW[]
#define CSIDL_DESKTOPDIRECTORY
#define ERROR_ALREADY_EXISTS
GLuint GLuint GLsizei GLenum type
static const WCHAR SearchesW[]
LPITEMIDLIST _ILCreateMyDocuments(void)
LPITEMIDLIST _ILCreateControlPanel(void)
HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPCWSTR pszSubPath, LPWSTR pszPath)
static const WCHAR My_MusicW[]
LPWSTR WINAPI PathCombineW(LPWSTR lpszDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
static const WCHAR Music_Sample_MusicW[]
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const WCHAR Start_Menu_Admin_ToolsW[]
static HRESULT _SHGetUserShellFolderPath(HKEY rootKey, LPCWSTR userPrefix, LPCWSTR value, LPWSTR path)
static const WCHAR PersonalW[]
static BOOL PathMakeUniqueNameA(LPSTR lpszBuffer, DWORD dwBuffSize, LPCSTR lpszShortName, LPCSTR lpszLongName, LPCSTR lpszPathName)
#define HeapFree(x, y, z)
LPITEMIDLIST _ILCreateBitBucket(void)
static const WCHAR PrintHoodW[]
static const WCHAR DefaultW[]
#define IDS_LOCAL_APPDATA
static const WCHAR CommonPicturesW[]
static const WCHAR PicturesW[]
static const WCHAR CommonMusicW[]
VOID WINAPI PathGetShortPathAW(LPVOID pszPath)
#define ERROR_FILENAME_EXCED_RANGE
#define HKEY_LOCAL_MACHINE
HRESULT SHELL_RegisterShellFolders(void)
#define ERROR_INSUFFICIENT_BUFFER