SHGetSpecialFolderLocation function

juergen.schmied at debitel.net juergen.schmied at debitel.net
Wed Jan 16 18:10:19 CST 2002


> What I've found though with the SHGetSpecialFolderLocation, is that it seems 
> to me that it is designed to allow the caller to pick an arbitrary value for 
> the CSIDL, and that this will cause windows to create a new CSIDL. As the 
> function's implementation currently stands, it has a hard-coded table of 
> possible CSIDLs, and rejects calls with unknown CSIDLs. 
This is right. There is a list with valid CSIDL's. These CSIDL's are 
mapped to a unique 
value name in the registry. These functions are supposed to fail when 
called with a 
CSIDL which is not predefined. (Whats not saying wine knows all 
CSIDL's).

 > Has anyone else looked at this function, and does anyone have any 
comments or 
> suggestions on ways to address this? I'm thinking that these values probably 
> need to go into the registry, or something, rather than being stored in the 
> code...
There is only a need to store the values in the registry when the path is 
different from 
the default value. If the there are no registry entrys in 

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Explorer\Shell 
Folders
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Explorer\User 
Shell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVer
sion\Explorer\Sh
ell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVer
sion\Explorer\Us
er Shell Folders

the the default values are used. (Was in w95, nt4 like this. Don't know it 
its true for w2k 
since apparently most values are set at installation time and there are 
more values 
used than before.)

Last but the not least: the current implementation was designed to work 
without much 
preset values in the registry to simplify the installation.

The implementation should be cleaned up starting with 
ShGetFolderLocation since this 
is the common base of SHGetFolderLocation, SHGetFolderPath, 
SHGetSpecialFolderLocationand SHGetSpecialFolderPath and you 
should have a 
fallback to deal with a empty registry. (I'm not up to date with the wine 
installation 
procedure but the installer would have to put many keys in the registry 
for a good 
shell32 konfiguration.)


Juergen



---
juergen.schmied at debitel.net






More information about the wine-devel mailing list