#include "priv.h" HRESULT RegisterActiveDesktopTemplates() { HRESULT hr = E_FAIL; TCHAR szPath[MAX_PATH]; if (GetWindowsDirectory(szPath, ARRAYSIZE(szPath)) && PathAppend(szPath, TEXT("web"))) { // we still register safemode.htt and deskmovr.htt for Active Desktop. if (PathAppend(szPath, TEXT("safemode.htt"))) { hr = SHRegisterValidateTemplate(szPath, SHRVT_REGISTER); } else { hr = ResultFromLastError(); } if (SUCCEEDED(hr)) { if (PathRemoveFileSpec(szPath) && PathAppend(szPath, TEXT("deskmovr.htt"))) { hr = SHRegisterValidateTemplate(szPath, SHRVT_REGISTER); } else { hr = ResultFromLastError(); } } } return hr; } HRESULT FixMyDocsDesktopIni() { HRESULT hr = E_FAIL; TCHAR szMyDocsIni[MAX_PATH]; if ((SHGetFolderPath(NULL, CSIDL_MYPICTURES, NULL, SHGFP_TYPE_CURRENT, szMyDocsIni) == S_OK) && PathAppend(szMyDocsIni, TEXT("desktop.ini"))) { // The default PersistMoniker is automatically determined by the shell. // So, lets clear the old settings. WritePrivateProfileString(TEXT("{5984FFE0-28D4-11CF-AE66-08002B2E1262}"), TEXT("WebViewTemplate.NT5"), NULL, szMyDocsIni); WritePrivateProfileString(TEXT("{5984FFE0-28D4-11CF-AE66-08002B2E1262}"), TEXT("PersistMoniker"), NULL, szMyDocsIni); WritePrivateProfileString(TEXT("ExtShellFolderViews"), TEXT("Default"), NULL, szMyDocsIni); hr = S_OK; } return hr; } HRESULT SetFileAndFolderAttribs(HINSTANCE hInstResource) { TCHAR szWinPath[MAX_PATH]; TCHAR szDestPath[MAX_PATH]; int i; const LPCTSTR rgSuperHiddenFiles[] = { TEXT("winnt.bmp"), TEXT("winnt256.bmp"), TEXT("lanmannt.bmp"), TEXT("lanma256.bmp"), TEXT("Web"), TEXT("Web\\Wallpaper") }; GetWindowsDirectory(szWinPath, ARRAYSIZE(szWinPath)); // Change the attributes on "Winnt.bmp", "Winnt256.bmp", "lanmannt.bmp", "lanma256.bmp" // to super hidden sothat they do not showup in the wallpaper list. for (i = 0; i < ARRAYSIZE(rgSuperHiddenFiles); i++) { lstrcpyn(szDestPath, szWinPath, ARRAYSIZE(szDestPath)); PathAppend(szDestPath, rgSuperHiddenFiles[i]); if (PathIsDirectory(szDestPath)) { PathMakeSystemFolder(szDestPath); } else { SetFileAttributes(szDestPath, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN); } } const int rgSysetemFolders[] = { CSIDL_PROGRAM_FILES, #ifdef _WIN64 CSIDL_PROGRAM_FILESX86 #endif }; // make the "Program Files" and "Program Files (x86)" system folders for (i = 0; i < ARRAYSIZE(rgSysetemFolders); i++) { if (SHGetFolderPath(NULL, rgSysetemFolders[i], NULL, 0, szDestPath) == S_OK) { PathMakeSystemFolder(szDestPath); } } // Fix up desktop.ini for My Pictures until we completely stop reading from it FixMyDocsDesktopIni(); // register the last two .htt files that Active Desktop still uses RegisterActiveDesktopTemplates(); return S_OK; }