Author: dquintana
Date: Thu Aug 27 16:37:13 2015
New Revision: 68834
URL:
http://svn.reactos.org/svn/reactos?rev=68834&view=rev
Log:
[SHELL32]
The desktop.ini file is only meant to be read if the folder has the R (read-only) or S
(system) attributes.
If this causes your favorite folder to stop showing the icon, use "attrib +r
<foldername>" or edit it from the properties dialog.
When we add the desktop.ini files, we will also need to add the R attribute to their
respective folders.
Followup to CORE-9002
Modified:
trunk/reactos/dll/win32/shell32/folders.cpp
Modified: trunk/reactos/dll/win32/shell32/folders.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/folders.…
==============================================================================
--- trunk/reactos/dll/win32/shell32/folders.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/folders.cpp [iso-8859-1] Thu Aug 27 16:37:13 2015
@@ -34,36 +34,40 @@
static const WCHAR iconIndex[] = { 'I', 'c', 'o',
'n', 'I', 'n', 'd', 'e', 'x', 0 };
static const WCHAR wszDesktopIni[] = {
'd','e','s','k','t','o','p','.','i','n','i',0
};
int icon_idx;
- WCHAR wszFolderPath[MAX_PATH];
-
- if (!SHGetPathFromIDListW(pidl, wszFolderPath))
- return FALSE;
-
- PathAppendW(wszFolderPath, wszDesktopIni);
-
- if (!(uFlags & GIL_DEFAULTICON) && PathFileExistsW(wszFolderPath))
- {
- WCHAR wszPath[MAX_PATH];
- WCHAR wszCLSIDValue[CHARS_IN_GUID];
-
- if (GetPrivateProfileStringW(shellClassInfo, iconFile, NULL, wszPath, MAX_PATH,
wszFolderPath))
- {
- ExpandEnvironmentStringsW(wszPath, szIconFile, cchMax);
-
- *piIndex = GetPrivateProfileIntW(shellClassInfo, iconIndex, 0,
wszFolderPath);
- return S_OK;
- }
- else if (GetPrivateProfileStringW(shellClassInfo, clsid, NULL, wszCLSIDValue,
CHARS_IN_GUID, wszFolderPath) &&
- HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
- {
- *piIndex = icon_idx;
- return S_OK;
- }
- else if (GetPrivateProfileStringW(shellClassInfo, clsid2, NULL, wszCLSIDValue,
CHARS_IN_GUID, wszFolderPath) &&
- HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
- {
- *piIndex = icon_idx;
- return S_OK;
+
+ if (!(uFlags & GIL_DEFAULTICON) &&
(_ILGetFileAttributes(ILFindLastID(pidl), NULL, 0) & (FILE_ATTRIBUTE_SYSTEM |
FILE_ATTRIBUTE_READONLY)) != 0 )
+ {
+ WCHAR wszFolderPath[MAX_PATH];
+
+ if (!SHGetPathFromIDListW(pidl, wszFolderPath))
+ return FALSE;
+
+ PathAppendW(wszFolderPath, wszDesktopIni);
+
+ if (PathFileExistsW(wszFolderPath))
+ {
+ WCHAR wszPath[MAX_PATH];
+ WCHAR wszCLSIDValue[CHARS_IN_GUID];
+
+ if (GetPrivateProfileStringW(shellClassInfo, iconFile, NULL, wszPath,
MAX_PATH, wszFolderPath))
+ {
+ ExpandEnvironmentStringsW(wszPath, szIconFile, cchMax);
+
+ *piIndex = GetPrivateProfileIntW(shellClassInfo, iconIndex, 0,
wszFolderPath);
+ return S_OK;
+ }
+ else if (GetPrivateProfileStringW(shellClassInfo, clsid, NULL, wszCLSIDValue,
CHARS_IN_GUID, wszFolderPath) &&
+ HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
+ {
+ *piIndex = icon_idx;
+ return S_OK;
+ }
+ else if (GetPrivateProfileStringW(shellClassInfo, clsid2, NULL,
wszCLSIDValue, CHARS_IN_GUID, wszFolderPath) &&
+ HCR_GetIconW(wszCLSIDValue, szIconFile, NULL, cchMax, &icon_idx))
+ {
+ *piIndex = icon_idx;
+ return S_OK;
+ }
}
}