in host/common/hostagenthelpers.cpp [3232:3382]
SVERROR DeleteStaleRegistrySettings(SV_HOST_AGENT_TYPE AgentType)
{
SVERROR rc;
std::string sConfigFilePath;
CRegKey cregkey;
char KeyName[256], ValueName[256];
int AgentCount = 0;
if(AgentType == SV_AGENT_SENTINEL)
{
inm_strcpy_s(KeyName, ARRAYSIZE(KeyName), SV_VXAGENT_VALUE_NAME);
}
else if(AgentType == SV_AGENT_OUTPOST )
{
inm_strcpy_s(KeyName, ARRAYSIZE(KeyName), SV_VXAGENT_VALUE_NAME);
}
else if(AgentType == SV_AGENT_FILE_REPLICATION)
{
inm_strcpy_s(KeyName, ARRAYSIZE(KeyName), SV_FILEREP_AGENT_VALUE_NAME);
}
if(AgentType != SV_AGENT_UNKNOWN)
{
rc = GetConfigFileName(sConfigFilePath);
if(rc == SVS_OK)
{
if( ERROR_SUCCESS == cregkey.Open( HKEY_LOCAL_MACHINE, KeyName ))
{
if(AgentType == SV_AGENT_SENTINEL)
{
CRegKey cregkey2;
char ch_str[] = "A", ch_end = 'Z';
cregkey2.Open( HKEY_LOCAL_MACHINE, SV_ROOT_TRANSPORT_KEY );
while(ch_str[0] <= ch_end)
{
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SRC_SECURE_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey2.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_DEST_SECURE_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey2.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_INITIALSYNC_OFFSET_LOW_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_INITIALSYNC_OFFSET_HIGH_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey.DeleteValue(ValueName);
ch_str[0] += 1;
}
cregkey2.Close();
cregkey.DeleteValue(SV_REGISTER_SYSTEM_DRIVE);
}
if(AgentType == SV_AGENT_OUTPOST)
{
CRegKey cregkey2;
char ch_str[] = "A", ch_end = 'Z';
cregkey2.Open( HKEY_LOCAL_MACHINE, SV_ROOT_TRANSPORT_KEY );
while(ch_str[0] <= ch_end)
{
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SRC_SECURE_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey2.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_DEST_SECURE_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey2.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_BYTES_APPLIED_THRESHOLD_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), "\\");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SYNC_BYTES_APPLIED_THRESHOLD_VALUE_NAME);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), "\\");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SNAPSHOT_OFFSET_HIGH);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey.DeleteValue(ValueName);
inm_strcpy_s(ValueName, ARRAYSIZE(ValueName), SV_SNAPSHOT_OFFSET_LOW);
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), " ");
inm_strcat_s(ValueName, ARRAYSIZE(ValueName), ch_str);
cregkey.DeleteValue(ValueName);
ch_str[0] += 1;
}
cregkey2.Close();
}
if(AgentType == SV_AGENT_FILE_REPLICATION)
{
}
cregkey.Close();
}
}
}
/* Now delete shared values */
if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_VXAGENT_VALUE_NAME))
{
cregkey.Close();
AgentCount++;
}
if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_VXAGENT_VALUE_NAME))
{
cregkey.Close();
AgentCount++;
}
if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_FILEREP_AGENT_VALUE_NAME))
{
cregkey.Close();
AgentCount++;
}
if( AgentCount <= 1)
{
if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_VALUE_NAME))
{
/* Delete shared keys under SV root */
cregkey.DeleteValue(SV_SERVER_NAME_VALUE_NAME);
cregkey.DeleteValue(SV_SERVER_HTTP_PORT_VALUE_NAME);
cregkey.DeleteValue(SV_HOST_AGENT_TYPE_VALUE_NAME);
cregkey.DeleteValue(SV_UNCOMPRESS_EXE_VALUE_NAME);
cregkey.DeleteValue(THROTTLE_BOOTSTRAP_URL);
cregkey.DeleteValue(THROTTLE_SENTINEL_URL);
cregkey.DeleteValue(THROTTLE_OUTPOST_URL);
cregkey.DeleteValue(THROTTLE_AGENT_URL);
cregkey.DeleteValue(SV_DEBUG_LOG_LEVEL_VALUE_NAME);
cregkey.DeleteValue(SV_SERVER_NAME_VALUE_NAME);
cregkey.Close();
}
if(ERROR_SUCCESS == cregkey.Open(HKEY_LOCAL_MACHINE, SV_TRANSPORT_VALUE_NAME))
{
/* Delete Transport shared keys */
cregkey.DeleteValue(SV_FTP_HOST_VALUE_NAME);
cregkey.DeleteValue(SV_FTP_USER_VALUE_NAME);
cregkey.DeleteValue(SV_FTP_PASSWORD_VALUE_NAME);
cregkey.DeleteValue(SV_FTP_PORT_VALUE_NAME);
cregkey.DeleteValue(SV_FTP_URL_VALUE_NAME);
cregkey.DeleteValue(SV_INMSYNC_TIMEOUT_SECONDS_VALUE_NAME);
cregkey.Close();
}
}
return SVS_OK;
}