public bool ApplyTweak(Tweak tweak, bool?byUser = null) { if (byUser != null) { tweak.State = byUser == true ? TweakList.Tweak.States.Sellected : TweakList.Tweak.States.SelGroupe; } tweak.Status = true; if (!tweak.IsAvailable()) { return(false); } bool success; if (AdminFunc.IsAdministrator() || tweak.usrLevel) { success = TweakTools.ApplyTweak(tweak); } else { success = App.client.ApplyTweak(tweak); } TweakChanged?.Invoke(this, new TweakEventArgs() { tweak = tweak }); return(success); }
public bool UndoTweak(Tweak tweak) { tweak.State = TweakList.Tweak.States.Unsellected; tweak.Status = false; if (!tweak.IsAvailable()) { return(false); } bool success; if (AdminFunc.IsAdministrator() || tweak.usrLevel) { success = TweakTools.UndoTweak(tweak); } else { success = App.client.UndoTweak(tweak); } TweakChanged?.Invoke(this, new TweakEventArgs() { tweak = tweak }); return(success); }
public bool TestTweak(Tweak tweak, bool fixChanged = false) { if (!tweak.IsAvailable()) { return(false); } bool status; if (AdminFunc.IsAdministrator() || tweak.usrLevel || !App.client.IsConnected()) { status = TweakEngine.TestTweak(tweak); } else { status = App.client.TestTweak(tweak); } if (tweak.Status != status) { tweak.Status = status; tweak.LastChangeTime = DateTime.Now; Dictionary <string, string> Params = new Dictionary <string, string>(); Params.Add("Name", tweak.Name); Params.Add("Group", tweak.Group); Params.Add("Category", tweak.Category); if (tweak.Status == false && tweak.State != Tweak.States.Unsellected) { if (fixChanged == true && tweak.FixFailed == false) { ApplyTweak(tweak); if (TestTweak(tweak, false) != true) { tweak.FixFailed = true; App.LogError(App.EventIDs.TweakError, Params, App.EventFlags.Notifications, Translate.fmt("msg_tweak_stuck", tweak.Name, tweak.Group)); } else { tweak.FixedCount++; App.LogInfo(App.EventIDs.TweakFixed, Params, App.EventFlags.Notifications, Translate.fmt("msg_tweak_fixed", tweak.Name, tweak.Group)); } } else { App.LogWarning(App.EventIDs.TweakChanged, Params, App.EventFlags.Notifications, Translate.fmt("msg_tweak_un_done", tweak.Name, tweak.Group)); } } } return(status); }
public TweakControl(Tweak tweak) { myTweak = tweak; myTweak.StatusChanged += OnStatusChanged; InitializeComponent(); OnStatusChanged(null, null); string infoStr = ""; switch (tweak.Type) { case TweakType.SetRegistry: case TweakType.SetGPO: infoStr += tweak.Path + "\r\n"; infoStr += tweak.Name + " = " + tweak.Value + "\r\n"; break; case TweakType.DisableTask: infoStr += "Disable Scheduled Task: " + tweak.Path + "\\" + tweak.Name + "\r\n"; break; case TweakType.DisableService: infoStr += "Disable Service: " + tweak.Name + "\r\n"; break; case TweakType.BlockFile: infoStr += "Dissable Access to: " + tweak.Path + "\r\n"; break; case TweakType.UseFirewall: infoStr += "Set Firewal roule" + "\r\n"; break; default: infoStr = "Unknown Tweak Type"; break; } info.Text = infoStr; toggle.Click += new RoutedEventHandler(toggle_Click); toggle.Click += new RoutedEventHandler(rect_Click); rect.MouseDown += new MouseButtonEventHandler(rect_Click); label.MouseDown += new MouseButtonEventHandler(rect_Click); info.PreviewMouseDown += new MouseButtonEventHandler(rect_Click); }
static public bool UndoTweak(Tweak tweak) { switch (tweak.Type) { case TweakType.SetRegistry: return(SetRegistryTweak(tweak.Path, tweak.Name, null, tweak.usrLevel)); case TweakType.SetGPO: return(SetGPOTweak(tweak.Path, tweak.Name, null, tweak.usrLevel)); case TweakType.DisableService: return(DisableService(tweak.Name, true)); case TweakType.DisableTask: return(DisableTask(tweak.Path, tweak.Name, true)); case TweakType.BlockFile: return(BlockFile(tweak.Path, true)); //case TweakType.UseFirewall: return ... } return(false); }
static public bool TestTweak(Tweak tweak) { switch (tweak.Type) { case TweakType.SetRegistry: return(TestRegistryTweak(tweak.Path, tweak.Name, tweak.Value, tweak.usrLevel)); case TweakType.SetGPO: return(TestGPOTweak(tweak.Path, tweak.Name, tweak.Value, tweak.usrLevel)); case TweakType.DisableService: return(IsServiceEnabled(tweak.Name) == false); case TweakType.DisableTask: return(IsTaskEnabled(tweak.Path, tweak.Name) == false); case TweakType.BlockFile: return(IsFileBlocked(tweak.Path)); //case TweakType.UseFirewall: return ... } return(false); }
public bool UndoTweak(Tweak tweak) { if (!tweak.IsAvailable()) { return(false); } bool success; if (AdminFunc.IsAdministrator() || tweak.usrLevel) { success = TweakEngine.UndoTweak(tweak); } else { success = App.client.UndoTweak(tweak); } //StatusChanged?.Invoke(this, new EventArgs()); return(success); }
public bool TestTweak(Tweak tweak, bool fixChanged = false) { if (!tweak.IsAvailable()) { return(false); } bool status; if (AdminFunc.IsAdministrator() || tweak.usrLevel || !App.client.IsConnected()) { status = TweakTools.TestTweak(tweak); } else { status = App.client.TestTweak(tweak); } if (tweak.Status != status) { tweak.Status = status; tweak.LastChangeTime = DateTime.Now; if (tweak.Status == false && tweak.State != Tweak.States.Unsellected) { Dictionary <string, string> Params = new Dictionary <string, string>(); Params.Add("Name", tweak.Name); Params.Add("Group", tweak.Group); Params.Add("Category", tweak.Category); TweakEventArgs.State state = TweakEventArgs.State.eChanged; if (fixChanged == true && tweak.FixFailed == false) { ApplyTweak(tweak); if (TestTweak(tweak, false) != true) { tweak.FixFailed = true; Priv10Logger.LogError(Priv10Logger.EventIDs.TweakError, Params, Priv10Logger.EventFlags.Notifications, Translate.fmt("msg_tweak_stuck", tweak.Name, tweak.Group)); } else { state = TweakEventArgs.State.eRestored; tweak.FixedCount++; Priv10Logger.LogInfo(Priv10Logger.EventIDs.TweakFixed, Params, Priv10Logger.EventFlags.Notifications, Translate.fmt("msg_tweak_fixed", tweak.Name, tweak.Group)); } } else { Priv10Logger.LogWarning(Priv10Logger.EventIDs.TweakChanged, Params, Priv10Logger.EventFlags.AppLogEntries, Translate.fmt("msg_tweak_un_done", tweak.Name, tweak.Group)); } if (state == TweakEventArgs.State.eChanged) { TweakChanged?.Invoke(this, new TweakEventArgs() { tweak = tweak, state = state }); } } } return(status); }
public bool Load(Dictionary <string, TweakStore.Category> Categorys) { if (!File.Exists(App.dataPath + @"\Tweaks.xml")) { return(false); } try { XmlDocument xDoc = new XmlDocument(); xDoc.Load(App.dataPath + @"\Tweaks.xml"); double fileVersion = 0.0; double.TryParse(xDoc.DocumentElement.GetAttribute("Version"), out fileVersion); if (fileVersion != xmlVersion) { if (fileVersion != 0 && fileVersion < xmlVersion) { FileOps.MoveFile(App.dataPath + @"\Tweaks.xml", App.dataPath + @"\Tweaks_old.xml", true); App.LogWarning(App.EventIDs.AppWarning, null, App.EventFlags.Notifications, Translate.fmt("msg_tweaks_updated", App.dataPath + @"\Tweaks_old.xml")); } else { App.LogError("Failed to load tweaklist, unknown file version {0}, expected {1}", fileVersion, xmlVersion); } return(false); } int TotalCount = 0; int ErrorCount = 0; foreach (XmlNode node in xDoc.DocumentElement.ChildNodes) { TotalCount++; Tweak tweak = new Tweak(); if (!tweak.Load(node)) { ErrorCount++; continue; } TweakStore.Category tweak_cat; if (!Categorys.TryGetValue(tweak.Category, out tweak_cat)) { tweak_cat = new TweakStore.Category(tweak.Category); Categorys.Add(tweak.Category, tweak_cat); } tweak_cat.Add(tweak); } if (ErrorCount != 0) { App.LogError("Failed to load {0} tweak entries out of {1}", ErrorCount, TotalCount); } App.LogInfo("TweakManager loaded {0} entries", TotalCount - ErrorCount); } catch (Exception err) { AppLog.Exception(err); return(false); } return(true); }
public void Add(Tweak tweak) { tweak.StatusChanged += OnStatusChanged; Tweaks.Add(tweak); }
public TweakGroup(Group group) { myGroup = group; InitializeComponent(); Dictionary <TweakType, TweakStat> tweaks = new Dictionary <TweakType, TweakStat>(); foreach (Tweak tweak in group.Tweaks) { if (!tweak.IsAvailable()) { continue; } tweak.StatusChanged += OnStatusChanged; TweakStat stat = null; if (!tweaks.TryGetValue(tweak.Type, out stat)) { stat = new TweakStat(); tweaks.Add(tweak.Type, stat); } stat.total++; if (tweak.Test()) { stat.enabled++; } } toggle.Click += new RoutedEventHandler(toggle_Checked); int height = 32; int i = 0; foreach (TweakType type in tweaks.Keys) { TweakStat stat = tweaks[type]; ContentControl item; /*if (tweaks.Count > 1) * { * CheckBox check = new CheckBox(); * check.Click += new RoutedEventHandler(rect_Click); * check.Click += new RoutedEventHandler(check_Checked); * check.Tag = type; * item = check; * } * else*/ { item = new Label(); item.Padding = new Thickness(17, 0, 0, 0); item.MouseDown += new MouseButtonEventHandler(rect_Click); } boxes.Add(type, item); item.Content = string.Format("{0}", Tweak.GetTypeStr(type)); item.Height = 16; item.VerticalAlignment = VerticalAlignment.Top; item.HorizontalAlignment = HorizontalAlignment.Left; //check.IsEnabled checks.Children.Add(item); RowDefinition row = new RowDefinition(); row.Height = new GridLength(item.Height); checks.RowDefinitions.Add(row); Grid.SetRow(item, i++); //Grid.SetColumn(item, 1); height += (int)item.Height; } this.Height = height; OnStatusChanged(null, null); toggle.Click += new RoutedEventHandler(rect_Click); rect.MouseDown += new MouseButtonEventHandler(rect_Click); label.MouseDown += new MouseButtonEventHandler(rect_Click); }
/*private void check_Checked(object sender, RoutedEventArgs e) * { * TweakType type = (TweakType)(sender as CheckBox).Tag; * bool state = (bool)(sender as CheckBox).IsChecked; * * foreach (Tweak tweak in myGroup.Tweaks) * { * if (!tweak.IsAvailable()) * continue; * * if (tweak.Type != type) * continue; * * if (state && (tweak.Sellected == null ? !tweak.Optional : (bool)tweak.Sellected)) * tweak.Apply(); * else if(!state) * tweak.Undo(); * } * }*/ void OnStatusChanged(object sender, EventArgs arg) { Dictionary <TweakType, TweakStat> stats = new Dictionary <TweakType, TweakStat>(); int active = 0; int selected = 0; foreach (Tweak tweak in myGroup.Tweaks) { if (!tweak.IsAvailable()) { continue; } if (tweak.Test()) { active++; } if (tweak.Sellected == null ? !tweak.Optional : (bool)tweak.Sellected) { selected++; } TweakStat stat = null; if (!stats.TryGetValue(tweak.Type, out stat)) { stat = new TweakStat(); stats.Add(tweak.Type, stat); } stat.total++; if (tweak.Test()) { stat.enabled++; } } if (active == 0) { toggle.IsChecked = false; } else if (active >= selected) { toggle.IsChecked = true; } else { toggle.IsChecked = null; } foreach (TweakType type in stats.Keys) { TweakStat stat = stats[type]; boxes[type].Content = string.Format("{0} {1}/{2}", Tweak.GetTypeStr(type), stat.enabled, stat.total); /*if (stat.enabled == 0) * boxes[type].IsChecked = false; * else if (stat.enabled == stat.total) * boxes[type].IsChecked = true; * else * boxes[type].IsChecked = null;*/ } }