HRESULT SHELL32_SetNameOfGuidItem(PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut) { GUID const *clsid = _ILGetGUIDPointer (pidl); LPOLESTR pStr; HRESULT hr; WCHAR szName[100]; if (!clsid) { ERR("Pidl is not reg item!\n"); return E_FAIL; } hr = StringFromCLSID(*clsid, &pStr); if (FAILED_UNEXPECTEDLY(hr)) return hr; swprintf(szName, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%s", pStr); DWORD cbData = (wcslen(lpName) + 1) * sizeof(WCHAR); LONG res = SHSetValueW(HKEY_CURRENT_USER, szName, NULL, RRF_RT_REG_SZ, lpName, cbData); CoTaskMemFree(pStr); if (res == ERROR_SUCCESS) { *pPidlOut = ILClone(pidl); return S_OK; } return E_FAIL; }
void AddRegisteredFolderToHistory(KNOWNFOLDERID kfid) { HKEY hKey; DWORD dwDisp = 0; if (ERROR_SUCCESS == RegCreateKeyExW(HKEY_LOCAL_MACHINE, SZ_REG_PATH_HISTORY, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisp)) { WCHAR szGuid[GUID_SIZE]; StringFromGUID2(kfid, szGuid, ARRAYSIZE(szGuid)); SHSetValueW(hKey, NULL, szGuid, REG_SZ, NULL, NULL); RegCloseKey(hKey); } }