91 lines
2.3 KiB
C
91 lines
2.3 KiB
C
/*++
|
|
|
|
Copyright (c) 2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
shell.c
|
|
|
|
Abstract:
|
|
|
|
This module contains code to set the shell optimizations based on the system's physical memory
|
|
|
|
[ComputerSettings]
|
|
OptimizeShell = YES | NO - Overides the default optimization. The default is based on the amount of
|
|
physical memory on the system. If the system has less than MIN_MEMORY MB of memory
|
|
the default for this key will be NO, otherwise, it will be YES.
|
|
|
|
|
|
Author:
|
|
|
|
Stephen Lodwick (stelo) 05/2001
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
//
|
|
// Include File(s):
|
|
//
|
|
#include "factoryp.h"
|
|
|
|
|
|
//
|
|
// Defined Value(s):
|
|
//
|
|
#define MIN_MEMORY 84 // Used 84MB because system may have 96MB but the memory function reports less (video memory)
|
|
|
|
#define REG_KEY_FASTUSERS _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon")
|
|
#define REG_VAL_MULTISES _T("AllowMultipleTSSessions")
|
|
|
|
|
|
BOOL OptimizeShell(LPSTATEDATA lpStateData)
|
|
{
|
|
BOOL bRet = TRUE;
|
|
MEMORYSTATUSEX mStatus;
|
|
DWORD dwSetting = 0;
|
|
|
|
|
|
// Do not continue if the user did not want to optimize the shell (optimize if there is no setting)
|
|
//
|
|
if ( !IniSettingExists(lpStateData->lpszWinBOMPath, INI_SEC_WBOM_SETTINGS, INI_KEY_WBOM_OPT_SHELL, INI_VAL_WBOM_NO) )
|
|
{
|
|
// Zero out the memory
|
|
//
|
|
ZeroMemory(&mStatus, sizeof(mStatus));
|
|
|
|
// Fill in required values
|
|
//
|
|
mStatus.dwLength = sizeof(mStatus);
|
|
|
|
// Determine the default value for shell optimization
|
|
//
|
|
if ( GlobalMemoryStatusEx(&mStatus) )
|
|
{
|
|
// Determine if the amount of memory on the system is enough
|
|
//
|
|
if ( (mStatus.ullTotalPhys / (1024 * 1024)) >= MIN_MEMORY )
|
|
{
|
|
dwSetting = 1;
|
|
}
|
|
|
|
// Set the value based on the memory
|
|
//
|
|
bRet = RegSetDword(HKLM, REG_KEY_FASTUSERS, REG_VAL_MULTISES, dwSetting);
|
|
}
|
|
else
|
|
{
|
|
// There was an error retrieving the memory status
|
|
//
|
|
bRet = FALSE;
|
|
}
|
|
}
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL DisplayOptimizeShell(LPSTATEDATA lpStateData)
|
|
{
|
|
return ( !IniSettingExists(lpStateData->lpszWinBOMPath, INI_SEC_WBOM_SETTINGS, INI_KEY_WBOM_OPT_SHELL, INI_VAL_WBOM_NO) );
|
|
} |