128 lines
3.5 KiB
C++
128 lines
3.5 KiB
C++
|
#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;
|
||
|
}
|