public ApplicationSettingsService(AppSettingsFileRepository appSettingsFileRepository, IRegistryAccess registryAccess)
        {
            _registryRepository = registryAccess;
            _fileRepository     = appSettingsFileRepository;

            try
            {
                bool result = _fileRepository.LoadSettings();
                if (!result)
                {
                    _fileRepository = new AppSettingsFileRepository();
                    _fileRepository.SaveSettings();
                }

                result = result & _registryRepository.TryReadObjectFromRegistry(out _registryAppSettings);
                if (!result || _registryAppSettings == null)
                {
                    _registryAppSettings = RegistryAppSettings.CreateNew(ProductName, CompanyName);
                    _registryRepository.SaveObjectToRegistry(_registryAppSettings);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Fatal error encountered when accessing the registry settings");
                _registryAppSettings = RegistryAppSettings.CreateNew(ProductName, CompanyName);
                //MessageBox.Show(ex.Message, Resources.Fatal_error_encountered_when_accessing_the_registry_settings_please_restart_, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            _fileRepository.LoadSettingsCompleted += _appSettingsFileRepository_LoadSettingsCompleted;
        }
 // Unit tests
 public static ApplicationSettingsService CreateService(AppSettingsFileRepository appSettingsFileRepository)
 {
     return(new ApplicationSettingsService(appSettingsFileRepository, new LocalStorageRegistryAccess(Application.CompanyName, Application.ProductName)));
 }