package imcl; import com.wilutions.com.reg.RegUtil; public class RegisterIMProvider { public static void register(String applicationName, String friendlyName, String processName, String guid, boolean asDefault) { String regkeyApp = "HKEY_LOCAL_MACHINE\\Software\\IM Providers\\" + applicationName; RegUtil.setRegistryValue(regkeyApp, "GUID", guid); RegUtil.setRegistryValue(regkeyApp, "FriendlyName", friendlyName); RegUtil.setRegistryValue(regkeyApp, "ProcessName", processName); String regkeyUser = "HKEY_CURRENT_USER\\Software\\IM Providers\\" + applicationName; RegUtil.setRegistryValue(regkeyUser, "UpAndRunning", 0); if (asDefault) { String regkeyDef = "HKEY_CURRENT_USER\\Software\\IM Providers"; RegUtil.setRegistryValue(regkeyDef, "DefaultIMApp", applicationName); // Office 2010 Logging // http://technet.microsoft.com/en-us/library/ff678502.aspx RegUtil.setRegistryValue(regkeyDef, "OfficePresenceLogging", 1); // Office 2013 Logging // https://social.msdn.microsoft.com/Forums/office/en-US/a174ca43-cdcf-4f78-a032-8e0cf6d29080/officepresencelogging-in-outlook-2013 RegUtil.setRegistryValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\15.0\\Common\\General", "EnablePCXLogging", 1); } } public static void unregister(String applicationName) { String regkeyApp = "HKEY_LOCAL_MACHINE\\Software\\IM Providers\\" + applicationName; RegUtil.purgeRegistryKey(regkeyApp); String regkeyUser = "HKEY_CURRENT_USER\\Software\\IM Providers\\" + applicationName; RegUtil.purgeRegistryKey(regkeyUser); String regkeyDef = "HKEY_CURRENT_USER\\Software\\IM Providers"; String defaultApp = (String)RegUtil.getRegistryValue(regkeyDef, "DefaultIMApp", ""); if (defaultApp.equals(applicationName)) { RegUtil.setRegistryValue(regkeyDef, "DefaultIMApp", ""); } } }