public void TestComparTo() { var tuple1 = new ComparableTuple<int>(1, 1); var tuple2 = new ComparableTuple<int>(1, 2); var tuple3 = new ComparableTuple<int>(2, 1); tuple1.Should().Be(tuple1); tuple1.Should().BeLessThan(tuple2); tuple2.Should().BeLessThan(tuple3); tuple3.Should().BeGreaterThan(tuple2); tuple2.Should().BeGreaterThan(tuple1); }
/// <summary> /// Stores information about the current state of the registry in a snapshot. /// </summary> /// <exception cref="IOException">There was an error accessing the registry.</exception> /// <exception cref="UnauthorizedAccessException">Read access to the registry was not permitted.</exception> private void TakeRegistry() { ServiceAssocs = GetServiceAssocs(); AutoPlayHandlersUser = RegUtils.GetSubKeyNames(Registry.CurrentUser, AutoPlay.RegKeyHandlers); AutoPlayHandlersMachine = RegUtils.GetSubKeyNames(Registry.LocalMachine, AutoPlay.RegKeyHandlers); AutoPlayAssocsUser = GetAutoPlayAssocs(Registry.CurrentUser); AutoPlayAssocsMachine = GetAutoPlayAssocs(Registry.LocalMachine); GetFileAssocData(out FileAssocs, out ProgIDs); ProtocolAssocs = GetProtocolAssoc(); ClassIDs = RegUtils.GetSubKeyNames(Registry.ClassesRoot, ComServer.RegKeyClassesIDs); RegisteredApplications = RegUtils.GetValueNames(Registry.LocalMachine, AppRegistration.RegKeyMachineRegisteredApplications); ContextMenuFiles = RegUtils.GetSubKeyNames(Registry.ClassesRoot, ContextMenu.RegKeyClassesFiles + "\\" + ContextMenu.RegKeyPostfix); ContextMenuExecutableFiles = RegUtils.GetSubKeyNames(Registry.ClassesRoot, ContextMenu.RegKeyClassesExecutableFiles + "\\" + ContextMenu.RegKeyPostfix); ContextMenuDirectories = RegUtils.GetSubKeyNames(Registry.ClassesRoot, ContextMenu.RegKeyClassesDirectories + "\\" + ContextMenu.RegKeyPostfix); ContextMenuAll = RegUtils.GetSubKeyNames(Registry.ClassesRoot, ContextMenu.RegKeyClassesAll + "\\" + ContextMenu.RegKeyPostfix); }
/// <summary> /// Retrieves a list of file assocations and programatic indentifiers the registry. /// </summary> private static void GetFileAssocData(out ComparableTuple<string>[] fileAssocs, out string[] progIDs) { var fileAssocsList = new List<ComparableTuple<string>>(); var progIDsList = new List<string>(); foreach (string keyName in Registry.ClassesRoot.GetSubKeyNames()) { if (keyName.StartsWith(".")) { using (var assocKey = Registry.ClassesRoot.OpenSubKey(keyName)) { if (assocKey == null) continue; // Get the main ProgID fileAssocsList.Add(new ComparableTuple<string>(keyName, assocKey.GetValue("", "").ToString())); // Get additional ProgIDs fileAssocsList.AddRange(RegUtils.GetValueNames(assocKey, FileType.RegSubKeyOpenWith).Select(progID => new ComparableTuple<string>(keyName, progID))); } } else progIDsList.Add(keyName); } fileAssocs = fileAssocsList.ToArray(); progIDs = progIDsList.ToArray(); }