From: Paul Gofman pgofman@codeweavers.com
--- dlls/shell32/shellpath.c | 17 ++++++++++++++++- dlls/shell32/tests/shellpath.c | 9 +++++++++ 2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c index 1a52717651e..412c27611e9 100644 --- a/dlls/shell32/shellpath.c +++ b/dlls/shell32/shellpath.c @@ -2074,7 +2074,17 @@ static const CSIDL_DATA CSIDL_Data[] = .name = L"VideosLibrary", .path = L"Videos.library-ms", .parsing = L"::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\{491E922F-5643-4af4-A7EB-4E7A138D8174}", - } + }, + { /* 0x73 */ + .id = &FOLDERID_AccountPictures, + .type = CSIDL_Type_User, + .category = KF_CATEGORY_PERUSER, + .name = L"AccountPictures", + .parent = &FOLDERID_RoamingAppData, + .path = L"Microsoft\Windows\AccountPictures", + .attributes = FILE_ATTRIBUTE_READONLY, + .flags = KFDF_PRECREATE | KFDF_ROAMABLE, + }, };
static int csidl_from_id( const KNOWNFOLDERID *id ) @@ -3281,6 +3291,11 @@ static HRESULT create_extra_folders(void) hr = SHGetFolderPathAndSubDirW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, SHGFP_TYPE_DEFAULT, L"Microsoft\Windows\Themes", path); } + if (SUCCEEDED(hr)) + { + hr = SHGetFolderPathAndSubDirW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, + SHGFP_TYPE_DEFAULT, L"Microsoft\Windows\AccountPictures", path); + } return hr; }
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c index 1f50640a25e..58f9022178c 100644 --- a/dlls/shell32/tests/shellpath.c +++ b/dlls/shell32/tests/shellpath.c @@ -1314,6 +1314,15 @@ static const struct knownFolderDef known_folders[] = { NULL, 0, 0), + KNOWN_FOLDER(FOLDERID_AccountPictures, + NO_CSIDL, + "AccountPictures", + KF_CATEGORY_PERUSER, + FOLDERID_RoamingAppData, GUID_NULL, + "Microsoft\Windows\AccountPictures", + NULL, + FILE_ATTRIBUTE_READONLY, + KFDF_PRECREATE | KFDF_ROAMABLE), }; #undef KNOWN_FOLDER BOOL known_folder_found[ARRAY_SIZE(known_folders)];
Far Horizon crashes without SHGetKnownFolderPath( &FOLDERID_AccountPictures ) succeeding and giving a path.