private IEnumerable <string> GetApplicationsFiles(RootRegistryKey rootKey, string baseKeyName) { var applications = new HashSet <string>(StringComparer.InvariantCultureIgnoreCase); using var applicationsKeys = _registryService.GetRegistryKey(rootKey).OpenSubKey(baseKeyName); foreach (var appExecuteFile in applicationsKeys.GetSubKeyNames()) { applications.Add(appExecuteFile); } return(applications.ToImmutableHashSet()); }
public IRegistryKey GetRegistryKey(RootRegistryKey rootRegistryKey) { var winRegistryKey = rootRegistryKey switch { RootRegistryKey.CurrentUser => Registry.CurrentUser, RootRegistryKey.ClassesRoot => Registry.ClassesRoot, RootRegistryKey.LocalMachine => Registry.LocalMachine, _ => throw new ArgumentOutOfRangeException(nameof(rootRegistryKey), rootRegistryKey, null) }; return(new RegistryKey(winRegistryKey)); } }
private IEnumerable <string> GetOpenWithList(string fileExtension, RootRegistryKey rootKey, string baseKeyName = "") { var results = new List <string>(); baseKeyName = @$ "{baseKeyName?.TrimEnd('\\')}\{fileExtension}\OpenWithList";
public async Task TestGetInstalledApplicationsAsyncClassesRoot(bool is64BitProcess, string registryKey, int resultsCount, RootRegistryKey key) { var subKeyMock = new Mock <IRegistryKey>(); subKeyMock .Setup(m => m.GetSubKeyNames()) .Returns(new[] { AppName }); var emptySubKeyMock = new Mock <IRegistryKey>(); emptySubKeyMock .Setup(m => m.GetSubKeyNames()) .Returns(new string[0]); var emptyKeyMock = new Mock <IRegistryKey>(); emptyKeyMock .Setup(m => m.OpenSubKey(It.IsAny <string>())) .Returns(new Mock <IRegistryKey>().Object); var registryKeyMock = new Mock <IRegistryKey>(); registryKeyMock .Setup(m => m.OpenSubKey(It.IsAny <string>())) .Returns(emptySubKeyMock.Object); registryKeyMock .Setup(m => m.OpenSubKey(registryKey)) .Returns(subKeyMock.Object); _autoMocker .Setup <IRegistryService, IRegistryKey>(m => m.GetRegistryKey(It.IsAny <RootRegistryKey>())) .Returns(emptyKeyMock.Object); _autoMocker .Setup <IRegistryService, IRegistryKey>(m => m.GetRegistryKey(key)) .Returns(registryKeyMock.Object); _autoMocker .Setup <IApplicationInfoProvider, (string Name, string StartCommand, string ExecutePath)>(m => m.GetInfo(AppName)) .Returns((AppName, AppCommand, ExecutePath)); _autoMocker .Setup <IRegexService, IList <Match> >(m => m.GetMatches(It.IsAny <string>(), "%.", RegexOptions.Compiled)) .Returns(new Match[0]); _autoMocker .Setup <IEnvironmentService, bool>(m => m.Is64BitProcess) .Returns(is64BitProcess); var service = _autoMocker.CreateInstance <WindowsApplicationService>(); var apps = await service.GetInstalledApplicationsAsync(); Assert.NotNull(apps); var appsArray = apps.ToArray(); Assert.Equal(resultsCount, appsArray.Length); if (resultsCount == 1) { var app = appsArray.Single(); Assert.Equal(AppName, app.DisplayName); Assert.Equal(AppCommand, app.Arguments); Assert.Equal(ExecutePath, app.ExecutePath); } }