Revert "load/unload registry keys on demand"
This reverts commit d41f0b868b.
This commit is contained in:
@@ -46,25 +46,21 @@ PWSTR pszSettingsMask = L"SettingsMask";
|
||||
|
||||
/* * * *\
|
||||
InitializeRegistryKeys -
|
||||
Creates the necessary registry keys if necessary.
|
||||
Takes the relevant registry keys and turns them
|
||||
into valid and usable handles.
|
||||
RETURNS -
|
||||
TRUE if successful, FALSE if unsuccessful.
|
||||
\* * * */
|
||||
BOOL InitializeRegistryKeys()
|
||||
{
|
||||
if (RegCreateKeyEx(HKEY_CURRENT_USER, PROGMGR_KEY, 0, szProgMgr, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &hKeyProgramManager, NULL) == ERROR_SUCCESS)
|
||||
if (!RegCreateKeyEx(HKEY_CURRENT_USER, PROGMGR_KEY, 0, szProgMgr, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &hKeyProgramManager, NULL))
|
||||
{
|
||||
// Create Program Groups and Settings keys
|
||||
RegCreateKeyEx(hKeyProgramManager, pszProgramGroups, 0, szProgMgr, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &hKeyProgramGroups, NULL);
|
||||
RegCreateKeyEx(hKeyProgramManager, pszSettings, 0, szProgMgr, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &hKeySettings, NULL);
|
||||
|
||||
// Close the key. We'll open/close the registry as we need to.
|
||||
RegCloseKey(hKeyProgramGroups);
|
||||
RegCloseKey(hKeySettings);
|
||||
RegCloseKey(hKeyProgramManager);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -91,14 +87,18 @@ BOOL IsProgMgrDefaultShell()
|
||||
if (RegQueryValueEx(hKeyWinlogon, L"Shell", 0, &dwType,
|
||||
(LPBYTE)szShell, &dwBufferSize) == ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(hKeyWinlogon);
|
||||
if (StrStr(szShell, szProgMgr))
|
||||
{
|
||||
// ProgMgr detected >:)
|
||||
RegCloseKey(hKeyWinlogon);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Inferior shell detected.
|
||||
RegCloseKey(hKeyWinlogon);
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -121,12 +121,6 @@ DWORD SaveGroupToRegistry(_In_ PGROUP pg)
|
||||
{
|
||||
DWORD dwConfigStatus = RCE_SUCCESS;
|
||||
|
||||
// Open the Program Groups key
|
||||
RegOpenKeyEx(HKEY_LOCAL_MACHINE, PROGMGR_KEY,
|
||||
0, KEY_READ | KEY_WRITE, &hKeyProgramManager);
|
||||
RegOpenKeyEx(hKeyProgramManager, pszProgramGroups, 0,
|
||||
KEY_READ | KEY_WRITE, &hKeyProgramGroups);
|
||||
|
||||
// If the pointer is invalid then fail out
|
||||
if (pg == NULL)
|
||||
return RCE_FAILURE;
|
||||
@@ -136,10 +130,6 @@ DWORD SaveGroupToRegistry(_In_ PGROUP pg)
|
||||
(const BYTE*)pg, (sizeof(*pg) + sizeof(ITEM) * pg->cItems)) == ERROR_SUCCESS)
|
||||
dwConfigStatus = dwConfigStatus && RCE_GROUPS;
|
||||
|
||||
// Close the keys
|
||||
RegCloseKey(hKeyProgramGroups);
|
||||
RegCloseKey(hKeyProgramManager);
|
||||
|
||||
return dwConfigStatus;
|
||||
}
|
||||
|
||||
@@ -154,12 +144,6 @@ DWORD LoadGroupFromRegistry(_Inout_ PGROUP pg, _Out_ DWORD dwBufferSize)
|
||||
DWORD dwConfigStatus = RCE_SUCCESS;
|
||||
DWORD dwType = REG_BINARY;
|
||||
|
||||
// Open the Program Groups key
|
||||
RegOpenKeyEx(HKEY_LOCAL_MACHINE, PROGMGR_KEY,
|
||||
0, KEY_READ | KEY_WRITE, &hKeyProgramManager);
|
||||
RegOpenKeyEx(hKeyProgramManager, pszProgramGroups, 0,
|
||||
KEY_READ | KEY_WRITE, &hKeyProgramGroups);
|
||||
|
||||
// If the pointer is invalid then fail out
|
||||
if (pg == NULL)
|
||||
return RCE_FAILURE;
|
||||
@@ -169,10 +153,6 @@ DWORD LoadGroupFromRegistry(_Inout_ PGROUP pg, _Out_ DWORD dwBufferSize)
|
||||
(LPBYTE)pg, &dwBufferSize) == ERROR_SUCCESS)
|
||||
dwConfigStatus = dwConfigStatus && RCE_POSITION;
|
||||
|
||||
// Close the keys
|
||||
RegCloseKey(hKeyProgramGroups);
|
||||
RegCloseKey(hKeyProgramManager);
|
||||
|
||||
return dwConfigStatus;
|
||||
}
|
||||
|
||||
@@ -187,14 +167,6 @@ DWORD SaveConfig(BOOL bSettings, BOOL bPos, BOOL bGroups)
|
||||
{
|
||||
DWORD dwConfigStatus = RCE_SUCCESS;
|
||||
|
||||
// Open the Program Groups and Settings keys
|
||||
RegOpenKeyEx(HKEY_LOCAL_MACHINE, PROGMGR_KEY,
|
||||
0, KEY_READ | KEY_WRITE, &hKeyProgramManager);
|
||||
RegOpenKeyEx(hKeyProgramManager, pszProgramGroups, 0,
|
||||
KEY_READ | KEY_WRITE, &hKeyProgramGroups);
|
||||
RegOpenKeyEx(hKeyProgramManager, pszSettings, 0,
|
||||
KEY_READ | KEY_WRITE, &hKeySettings);
|
||||
|
||||
if (bSettings)
|
||||
{
|
||||
// Shrink the settings into the bitmask and save it
|
||||
@@ -235,11 +207,6 @@ DWORD SaveConfig(BOOL bSettings, BOOL bPos, BOOL bGroups)
|
||||
dwConfigStatus = dwConfigStatus && RCE_GROUPS;
|
||||
}
|
||||
|
||||
// Close the keys
|
||||
RegCloseKey(hKeyProgramGroups);
|
||||
RegCloseKey(hKeySettings);
|
||||
RegCloseKey(hKeyProgramManager);
|
||||
|
||||
return dwConfigStatus;
|
||||
}
|
||||
|
||||
@@ -254,14 +221,6 @@ DWORD LoadConfig(BOOL bSettings, BOOL bPos, BOOL bGroups)
|
||||
{
|
||||
DWORD dwConfigStatus = RCE_SUCCESS;
|
||||
|
||||
// Open the Program Groups and Settings keys
|
||||
RegOpenKeyEx(HKEY_LOCAL_MACHINE, PROGMGR_KEY,
|
||||
0, KEY_READ | KEY_WRITE, &hKeyProgramManager);
|
||||
RegOpenKeyEx(hKeyProgramManager, pszProgramGroups, 0,
|
||||
KEY_READ | KEY_WRITE, &hKeyProgramGroups);
|
||||
RegOpenKeyEx(hKeyProgramManager, pszSettings, 0,
|
||||
KEY_READ | KEY_WRITE, &hKeySettings);
|
||||
|
||||
if (bSettings)
|
||||
{
|
||||
DWORD dwBufferSize = sizeof(dwSettingsMask);
|
||||
@@ -297,10 +256,5 @@ DWORD LoadConfig(BOOL bSettings, BOOL bPos, BOOL bGroups)
|
||||
dwConfigStatus = dwConfigStatus && RCE_GROUPS;
|
||||
}
|
||||
|
||||
// Close the keys
|
||||
RegCloseKey(hKeyProgramGroups);
|
||||
RegCloseKey(hKeySettings);
|
||||
RegCloseKey(hKeyProgramManager);
|
||||
|
||||
return dwConfigStatus;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user