Commit Graph

262 Commits

Author SHA1 Message Date
Andrew Eikum 96030ce738 shell32: Use correct environment substitution for FOLDERID_Public.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-01 21:25:17 +02:00
Andrew Eikum 98d43c5dcf shell32: Calculate known folder paths from parent and relative path.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 21:40:37 +02:00
Andrew Eikum 4111801ab3 shell32: Use winvista+ AppData paths.
Katamari Damacy Reroll makes an assumption that the LocalAppData folder
is a sibling of the LocalAppDataLow folder.

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 21:40:37 +02:00
Andrew Eikum 2a52efb7a3 shell32: Use stored registry path for known folder symlinks.
This allows us to keep the same symlinks for knownfolders after the
upcoming patches. A functional change is that, if a user or
application has redirected one of the known folders, we will now
attempt to create the symlink at the redirected path instead of the
default one.

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 21:28:20 +02:00
Olivier F. R. Dierick 2aad95254c shell32: Create user folder symlinks on lookup and only if it's missing.
Change the logic so that when a user folder already exists in the
prefix, as a real directory or symbolic link, it's left as-is. Also
create a symbolic link, instead of a real directory, when looking up a
user folder that is currently missing.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:27:26 +01:00
Olivier F. R. Dierick 9cb47e8821 shell32: Add a function to create one specific symbolic link at a time for user dirs.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:27:13 +01:00
Olivier F. R. Dierick 60915a5544 shell32: Move 'Desktop' symbolic link creation to a separate function.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:26:58 +01:00
Olivier F. R. Dierick c6d8f1ac28 shell32: Move 'My Stuff' symbolic link creation in a separate generic function.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:26:50 +01:00
Olivier F. R. Dierick fe89ae4965 shell32: Move 'My Documents' symbolic link creation in a separate function.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:26:37 +01:00
Olivier F. R. Dierick a08d3fe10e shell32: Add a helper function to create a shell folder from CSIDL and return its unix path.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:26:20 +01:00
Olivier F. R. Dierick 7642388153 shell32: Add a helper function to create 'My Stuff' sub dirs in 'My Documents'.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:26:02 +01:00
Olivier F. R. Dierick 8c7c6e9b79 shell32: Add helper functions for XDG directories lookup and resource deallocation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:25:41 +01:00
Olivier F. R. Dierick 81b4dba58a shell32: Move _SHCreateSymbolicLinks() above shell folders lookup functions.
Looking up shell folders creates real directories when the folder is
inexistant, but the intended behavior for some folders is to create
symbolic links by default. Prepare that change by moving the helper
function above shell folders lookup functions. Also fix whitespace
issues in the moved code.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22974
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:25:07 +01:00
Gijs Vermeulen a5a2749cfe shell32: Implement PathResolve.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48082
Signed-off-by: Gijs Vermeulen <gijsvrm@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-12 23:17:06 +01:00
Alex Henrie 477ff7e034 shell32: Symlink the Downloads and Templates folders too.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-05 23:36:23 +01:00
Hans Leidekker 3ca6b296da shell32: Fix definitions for FOLDERID_ProgramFilesX64 and FOLDERID_ProgramFilesCommonX64 on 64-bit.
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-14 15:45:18 +01:00
Sven Baars 48e6f8f99d shell32: Don't return a path from SHGetKnownFolderPath when it can not be created.
Signed-off-by: Sven Baars <sven.wine@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 19:57:27 +01:00
Alexandre Julliard 4a6855a575 shell32: Re-add support for expanding ALLUSERSPROFILE for backward compatibility.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-06 17:07:15 +02:00
Alexandre Julliard ceea5bda14 shell32: Avoid infinite loop in _SHExpandEnvironmentStrings.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-06 17:07:15 +02:00
Alexandre Julliard 54530bc493 shell32: Assume that system directory always contains a drive letter.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-06 17:07:15 +02:00
Dmitry Timoshkov 27edd4e35c shell32: Use Public instead of AllUsersProfile in the registry.
This matches what recent Windows versions set in the process environment.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 12:39:59 +02:00
Józef Kucia ff7c2c5171 shell32: Accept more flags in SHGetKnownFolderPath().
KF_FLAG_SIMPLE_IDLIST | KF_FLAG_DONT_UNEXPAND doesn't seem to influence
results returned by SHGetKnownFolderPath().

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-22 17:14:20 +02:00
Sebastian Lackner e98963f2ab shell32: Create Microsoft\Windows\Themes directory during prefix creation.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-17 10:51:22 +02:00
Nikolay Sivov 612a194133 shell32: Use ARRAY_SIZE macro.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-19 12:35:12 +01:00
Nikolay Sivov e3b200bd8a shell32: Use global memory allocation helpers.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-22 14:16:33 +01:00
Nikolay Sivov bb09bb5750 shell32: Fix a trace message.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-23 16:21:33 +01:00
Nikolay Sivov f75d562596 shell32: Fix SHGetFolderPathAndSubDir() trace message.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-26 10:12:44 +01:00
Lucian Poston 349064216a shell32: Stub GetRedirectionCapabilities with S_OK.
Signed-off-by: Lucian Poston <lucian.poston@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-24 17:33:44 +01:00
Vincent Povirk dcb1359b5e shell32: Change default ProgramData folder and set ProfileList key.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-24 14:08:18 +09:00
Andrey Gusev 8ea9c33829 shell32: Add IApplicationDestinations stub.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-08 19:22:18 +02:00
Nikolay Sivov 0bfb97dcba shell32: Pass correct buffer length to RegQueryValueExW().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-08 16:00:39 +01:00
Nikolay Sivov 3c6cbc2f91 shell32: Don't access uninitialized buffer (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-14 20:56:13 +01:00
Nikolay Sivov a0c259cf56 shell32: Move retrieving folder path logic to SHGetKnownFolderPath().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-06 18:57:36 +01:00
Hans Leidekker 567b52cd93 shell32: Implement IKnownFolderManager::GetFolderByName.
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-22 16:32:00 +01:00
Jactry Zeng dad2223ad6 shell32: Use remove() instead of rmdir().
rmdir() will fail when target is a symbolic link.

Signed-off-by: Jactry Zeng <jzeng@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-26 20:40:42 +09:00
Nikolay Sivov 95ecc29a50 shell32: Remove another recurring return code check (PVS-Studio).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-21 00:25:34 +09:00
Nikolay Sivov e2275b0a2a shell32: Remove recurring return value check (PVS-Studio).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-19 12:22:39 +09:00
Nikolay Sivov 69733d65e8 shell32: Handle string-to-guid conversion errors (Coverity). 2015-07-06 15:13:24 +09:00
Nikolay Sivov 80d28abdc8 shell32: Partially implement SHGetKnownFolderIDList(). 2015-05-11 15:39:25 +09:00
Nikolay Sivov 4367f4b230 shell32: Silence IMarshal requests to IKnownFolder and IKnownFolderManager. 2015-05-11 15:39:25 +09:00
Nikolay Sivov 594e0b674f shell32: Forward couple of IKnownFolder methods to regular API equivalents. 2015-05-11 15:39:24 +09:00
Andrew Eikum 8042831061 shell32: Add more knownfolders. 2015-04-14 16:50:07 +09:00
Andrew Eikum 96971ea36d shell32: Add more knownfolders. 2015-04-13 15:04:25 +09:00
Andrew Eikum c6b999b901 shell32: Add more knownfolders. 2015-04-10 15:21:35 +09:00
Andrew Eikum f58c11767a shell32: Add more knownfolders. 2015-04-09 13:24:30 +09:00
Andrew Eikum e4868d5635 shell32: Allocate returned array in IKnownFolderManager::GetFolderIds. 2015-04-09 13:24:23 +09:00
Andrew Eikum 915bef8725 shell32: Add more knownfolder definitions. 2015-04-08 23:21:33 +09:00
Andrew Eikum c01efd0666 shell32: Support setting and retrieving KnownFolder parsing names. 2015-04-08 23:19:35 +09:00
Francois Gouget e9d010ef62 shell32: Add support for the OS X 'My Stuff' folders. 2015-04-08 16:21:39 +09:00
Francois Gouget e4c285b074 shell32: Point the 'My Documents' symbolic link to the XDG or OS X 'Documents' folder if they exist. 2015-04-03 11:22:00 +09:00