/// <summary> /// Try to detect the addin is loaded from system hive key /// </summary> /// <returns>null if unkown or true/false</returns> private bool?IsLoadedFromSystem() { if (null != _isLoadedFromSystem) { return(_isLoadedFromSystem); } OfficeApi.Tools.Contribution.RegistryLocationResult result = OfficeApi.Tools.Contribution.CommonUtils.TryFindAddinLoadLocation(Type, ApplicationIdentifiers.ApplicationType.Access); switch (result) { case Office.Tools.Contribution.RegistryLocationResult.User: _isLoadedFromSystem = false; break; case Office.Tools.Contribution.RegistryLocationResult.System: _isLoadedFromSystem = true; break; default: throw new IndexOutOfRangeException(); } return(_isLoadedFromSystem); }
/// <summary> /// Try to detect the addin is loaded from system hive key /// </summary> /// <returns>null if unkown or true/false</returns> private bool?IsLoadedFromSystem() { if (null != _isLoadedFromSystem) { return(_isLoadedFromSystem); } ApplicationIdentifiers.ApplicationType applicationType = ApplicationIdentifiers.IsApplication(Application.UnderlyingType.GUID); if (applicationType == ApplicationIdentifiers.ApplicationType.None) { return(null); } OfficeApi.Tools.Contribution.RegistryLocationResult result = OfficeApi.Tools.Contribution.CommonUtils.TryFindAddinLoadLocation(Type, applicationType); switch (result) { case Office.Tools.Contribution.RegistryLocationResult.User: return(false); case Office.Tools.Contribution.RegistryLocationResult.System: return(true); default: throw new IndexOutOfRangeException(); } }
/// <summary> /// Creates an registry tweak entry in the current addin key /// </summary> /// <param name="applicationType">target office application</param> /// <param name="addinType">addin class type informations</param> /// <param name="name">name for the tweak</param> /// <param name="value">value for the tweak</param> /// <param name="throwException">throw exception on error</param> /// <returns>true if value was stored otherwise false</returns> public static bool SetTweakPersistenceEntry(ApplicationIdentifiers.ApplicationType applicationType, Type addinType, string name, string value, bool throwException) { try { if (null == addinType) { return(false); } RegistryLocationAttribute location = AttributeReflector.GetRegistryLocationAttribute(addinType); ProgIdAttribute progID = AttributeReflector.GetProgIDAttribute(addinType); OfficeApi.Tools.Contribution.RegistryLocationResult addinLocation = Tools.Contribution.CommonUtils.TryFindAddinLoadLocation(addinType, applicationType); if (addinLocation == Office.Tools.Contribution.RegistryLocationResult.Unknown) { return(false); } RegistryKey regKey = null; switch (addinLocation) { case Office.Tools.Contribution.RegistryLocationResult.User: regKey = Registry.LocalMachine.OpenSubKey(_addinOfficeRegistryKey + progID.Value, true); break; case Office.Tools.Contribution.RegistryLocationResult.System: regKey = Registry.CurrentUser.OpenSubKey(_addinOfficeRegistryKey + progID.Value, true); break; } if (null == regKey) { return(false); } regKey.SetValue(name, value); regKey.Close(); return(true); } catch (Exception exception) { NetOffice.DebugConsole.Default.WriteException(exception); if (throwException) { throw; } else { return(false); } } }