Alistair Leslie-Hughes leslie_alistair@hotmail.com writes:
HRESULT WINAPI SHCreateSessionKey(REGSAM access, HKEY *hkey) {
- FIXME("stub: %d %p\n", access, hkey);
- *hkey = NULL;
- return E_NOTIMPL;
- static INIT_ONCE init_once = INIT_ONCE_STATIC_INIT;
- static WCHAR session_reg_str[MAX_PATH];
- InitOnceExecuteOnce(&init_once, create_session_key, session_reg_str, NULL);
- TRACE("using session key %s\n", debugstr_w(session_reg_str));
- return RegOpenKeyExW(HKEY_CURRENT_USER, session_reg_str, 0, access, hkey);
I'd suggest to always use RegCreateKeyExW and get rid of the init once part.
- /* Check the registery */
- ProcessIdToSessionId( GetCurrentProcessId(), &session);
- wsprintfW(sessionW, session_format, session);
- ret = RegOpenKeyW(HKEY_CURRENT_USER, sessionW, &hkey);
- /* Fails on XP and w2k3, SHGetPathFromIDListEx available for Vista+ */
- ok(!ret || (ret && !pSHGetPathFromIDListEx), "key not found\n");
SHGetPathFromIDListEx doesn't seem related to this function. This could be a simple broken(), or even better a check for the different location presumably used in XP.