Hi, all 
In version of SCCM 2012, We just to check the register path like below, it works as we expected. 
//if it is a primary site. the register path exists 
GetSafeRegistryStringValue("HKEY_LOCAL_MACHINE", @"SOFTWARE\Microsoft\SMS\Setup", "Installation Directory") 
//if it is a console only.  after above register path check fail, we need to verify the following. If exists, it should be a console 
GetSafeRegistryStringValue("HKEY_LOCAL_MACHINE", @"SOFTWARE\Microsoft\ConfigMgr10\Setup", "UI Installation Directory") 
but in the version of SCCM 2012 SP1 beta, when we check on a console only server, we find the following path exists!! As 
we expected, it should not be exist on a console only server, but in primary server. 
GetSafeRegistryStringValue("HKEY_LOCAL_MACHINE", @"SOFTWARE\Microsoft\SMS\Setup", "Installation Directory") 
Could anyone help me to figure out how could I check the register path to tell which is SCCM server and which is just a console server?