private void DisableUser_Click(object sender, EventArgs e) { String sSelectedUserName = ""; PrincipalContext pctxLocalMachine; UserPrincipal usrpSelectedUser; try { sSelectedUserName = cmbUserList.SelectedItem.ToString(); pctxLocalMachine = new PrincipalContext(ContextType.Machine); usrpSelectedUser = UserPrincipal.FindByIdentity(pctxLocalMachine, IdentityType.SamAccountName, sSelectedUserName); usrpSelectedUser.Enabled = false; usrpSelectedUser.Save(); cmbSunFromTime.Enabled = false; cmbSunToTime.Enabled = false; cmbMonFromTime.Enabled = false; cmbMonToTime.Enabled = false; cmbTueFromTime.Enabled = false; cmbTueToTime.Enabled = false; cmbWedFromTime.Enabled = false; cmbWedToTime.Enabled = false; cmbThuFromTime.Enabled = false; cmbThuToTime.Enabled = false; cmbFriFromTime.Enabled = false; cmbFriToTime.Enabled = false; cmbSatFromTime.Enabled = false; cmbSatToTime.Enabled = false; btnSave.Enabled = false; // Disable triggers for scheduled tasks in the Task Scheduler using (TaskService ts = new TaskService(@"\")) { TaskFolder myFolder = ts.GetFolder("Karthik's Custom Tasks"); var myTasks = myFolder.Tasks.Where(t => t.Name.Equals(sSelectedUserName + " Force Logoff", StringComparison.OrdinalIgnoreCase)); Microsoft.Win32.TaskScheduler.Task myTask = myTasks.ElementAt(0); //myTask.Enabled = false; myTask.Definition.Settings.Enabled = false; myTask.RegisterChanges(); } MessageBox.Show(sSelectedUserName + " has been disabled now!"); usrpSelectedUser.Dispose(); pctxLocalMachine.Dispose(); } catch (Exception ex) { Console.WriteLine(ex); Console.WriteLine(ex.StackTrace); } btnEnableUser.Enabled = true; btnDisableUser.Enabled = false; }
/// <summary> /// Handles the Click event of the okBtn control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> /// <remarks>Changed in release 1.8.4 so that when a user cancels the password dialog, it no longer throws an exception but rather displays an error.</remarks> private void okBtn_Click(object sender, System.EventArgs e) { if (TaskDefinition.Actions.Count == 0) { MessageBox.Show(EditorProperties.Resources.TaskMustHaveActionsError, null, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (TaskDefinition.Settings.DeleteExpiredTaskAfter != TimeSpan.Zero && !ValidateOneTriggerExpires()) { MessageBox.Show(EditorProperties.Resources.Error_TaskDeleteMustHaveExpiringTrigger, null, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (TaskDefinition.LowestSupportedVersion > TaskDefinition.Settings.Compatibility) { MessageBox.Show(EditorProperties.Resources.Error_TaskPropertiesIncompatibleSimple, null, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (RegisterTaskOnAccept) { if (Task != null && !TaskDefinition.Principal.RequiresPassword()) { Task.RegisterChanges(); } else { var user = TaskDefinition.Principal.ToString(); user = string.IsNullOrEmpty(user) ? WindowsIdentity.GetCurrent().Name : user; string pwd = null; TaskFolder fld = TaskService.GetFolder(TaskFolder); if (TaskDefinition.Principal.RequiresPassword()) { pwd = InvokeCredentialDialog(user, this); if (pwd == null) { //throw new System.Security.Authentication.AuthenticationException(EditorProperties.Resources.UserAuthenticationError); MessageBox.Show(EditorProperties.Resources.Error_PasswordMustBeProvided, null, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } Task = fld.RegisterTaskDefinition(taskPropertiesControl1.TaskName, TaskDefinition, TaskCreation.CreateOrUpdate, user, pwd, TaskDefinition.Principal.LogonType); } } DialogResult = DialogResult.OK; Close(); }
static void Main(string[] args) { /*string sUserName = "******"; * PrincipalContext pctx; * UserPrincipal usr; * * pctx = new PrincipalContext(ContextType.Machine); * usr = UserPrincipal.FindByIdentity(pctx, IdentityType.SamAccountName, sUserName); * * var myUserLogonTimes = PermittedLogonTimes.GetLogonTimes(usr.PermittedLogonTimes, TimeZoneInfo.FindSystemTimeZoneById(TimeZone.CurrentTimeZone.StandardName)); * for (int iIndex = 0; iIndex < myUserLogonTimes.Count; iIndex++) * { * LogonTime lExtractedTime = myUserLogonTimes.ElementAt(iIndex); * Console.WriteLine("Day ="+lExtractedTime.DayOfWeek.ToString()+"; Begin="+lExtractedTime.BeginTime.ToShortTimeString()+ * "; End="+lExtractedTime.EndTime.ToShortTimeString()+"!"); * } * for( int iIndex = 0; iIndex < usr.PermittedLogonTimes.Length; iIndex++ ) * { * Console.WriteLine(iIndex+": "+usr.PermittedLogonTimes.ElementAt(iIndex)); * }*/ //var zone = TimeZoneInfo.FindSystemTimeZoneById(TimeZone.CurrentTimeZone.StandardName); /*var times = new List<MyParentalControlSoftware.LogonTime>(); * * var Suntime = new LogonTime(DayOfWeek.Sunday, new DateTime(2011, 1, 1, 0, 0, 0), new DateTime(2011, 1, 1, 1, 0, 0)); * times.Add(Suntime); * * var Montime = new LogonTime(DayOfWeek.Monday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0)); * times.Add(Montime); * * var Tuetime = new LogonTime(DayOfWeek.Tuesday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0)); * times.Add(Tuetime); * * var Wedtime = new LogonTime(DayOfWeek.Wednesday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0)); * times.Add(Wedtime); * * var Thutime = new LogonTime(DayOfWeek.Thursday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0)); * times.Add(Thutime); * * var Fritime = new LogonTime(DayOfWeek.Friday, new DateTime(2011, 1, 1, 17, 0, 0), new DateTime(2011, 1, 1, 18, 0, 0)); * times.Add(Fritime); * * var Sattime = new LogonTime(DayOfWeek.Saturday, new DateTime(2011, 1, 1, 23, 0, 0), new DateTime(2011, 1, 2, 0, 0, 0)); * times.Add(Sattime); * * var mask = PermittedLogonTimes.GetByteMask(times); * * foreach( byte byteVal in mask) * { * Console.WriteLine("{0}", byteVal); * }*/ // Access the Task Scheduler and change the trigger times for the Logoff Tasks for both Advik and Adhrit using (TaskService ts = new TaskService(@"\")) { TaskFolder myFolder = ts.GetFolder("Karthik's Custom Tasks"); var myTasks = myFolder.Tasks.Where(t => t.Name.Equals("Force Advik's User Logoff", StringComparison.OrdinalIgnoreCase)); Microsoft.Win32.TaskScheduler.Task myTask = myTasks.ElementAt(0); myTask.Definition.Triggers.Clear(); WeeklyTrigger myWeekdayTrigger = new WeeklyTrigger { StartBoundary = DateTime.Parse("4:59:30 PM"), DaysOfWeek = DaysOfTheWeek.Monday | DaysOfTheWeek.Tuesday | DaysOfTheWeek.Wednesday | DaysOfTheWeek.Thursday | DaysOfTheWeek.Friday, WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myWeekdayTrigger); myTask.RegisterChanges(); } Console.ReadLine(); }
private void Save_Click(object sender, EventArgs e) { DateTime dtSunFromTime, dtMonFromTime, dtTueFromTime, dtWedFromTime, dtThuFromTime, dtFriFromTime, dtSatFromTime; DateTime dtSunToTime, dtMonToTime, dtTueToTime, dtWedToTime, dtThuToTime, dtFriToTime, dtSatToTime; String sSelectedUserName = "", sFromTime = "", sToTime = ""; LogonTime lSunLogonTime, lMonLogonTime, lTueLogonTime, lWedLogonTime; LogonTime lThuLogonTime, lFriLogonTime, lSatLogonTime; List <LogonTime> lstLogonTimes = new List <LogonTime>(); PrincipalContext pctxLocalMachine; UserPrincipal usrpSelectedUser; sSelectedUserName = cmbUserList.SelectedItem.ToString(); // Testing to see if I can use the WMI API for Windows Parental Controls pctxLocalMachine = new PrincipalContext(ContextType.Machine); usrpSelectedUser = UserPrincipal.FindByIdentity(pctxLocalMachine, IdentityType.SamAccountName, sSelectedUserName); sFromTime = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " "; sFromTime = sFromTime + cmbSunFromTime.SelectedItem.ToString(); sToTime = sToTime + cmbSunToTime.SelectedItem.ToString(); dtSunFromTime = DateTime.Parse(sFromTime); dtSunToTime = DateTime.Parse(sToTime); lSunLogonTime = new LogonTime(System.DayOfWeek.Sunday, dtSunFromTime, dtSunToTime); lstLogonTimes.Add(lSunLogonTime); sFromTime = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " "; sFromTime = sFromTime + cmbMonFromTime.SelectedItem.ToString(); sToTime = sToTime + cmbMonToTime.SelectedItem.ToString(); dtMonFromTime = DateTime.Parse(sFromTime); dtMonToTime = DateTime.Parse(sToTime); lMonLogonTime = new LogonTime(System.DayOfWeek.Monday, dtMonFromTime, dtMonToTime); lstLogonTimes.Add(lMonLogonTime); sFromTime = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " "; sFromTime = sFromTime + cmbTueFromTime.SelectedItem.ToString(); sToTime = sToTime + cmbTueToTime.SelectedItem.ToString(); dtTueFromTime = DateTime.Parse(sFromTime); dtTueToTime = DateTime.Parse(sToTime); lTueLogonTime = new LogonTime(System.DayOfWeek.Tuesday, dtTueFromTime, dtTueToTime); lstLogonTimes.Add(lTueLogonTime); sFromTime = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " "; sFromTime = sFromTime + cmbWedFromTime.SelectedItem.ToString(); sToTime = sToTime + cmbWedToTime.SelectedItem.ToString(); dtWedFromTime = DateTime.Parse(sFromTime); dtWedToTime = DateTime.Parse(sToTime); lWedLogonTime = new LogonTime(System.DayOfWeek.Wednesday, dtWedFromTime, dtWedToTime); lstLogonTimes.Add(lWedLogonTime); sFromTime = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " "; sFromTime = sFromTime + cmbThuFromTime.SelectedItem.ToString(); sToTime = sToTime + cmbThuToTime.SelectedItem.ToString(); dtThuFromTime = DateTime.Parse(sFromTime); dtThuToTime = DateTime.Parse(sToTime); lThuLogonTime = new LogonTime(System.DayOfWeek.Thursday, dtThuFromTime, dtThuToTime); lstLogonTimes.Add(lThuLogonTime); sFromTime = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " "; sFromTime = sFromTime + cmbFriFromTime.SelectedItem.ToString(); sToTime = sToTime + cmbFriToTime.SelectedItem.ToString(); dtFriFromTime = DateTime.Parse(sFromTime); dtFriToTime = DateTime.Parse(sToTime); lFriLogonTime = new LogonTime(System.DayOfWeek.Friday, dtFriFromTime, dtFriToTime); lstLogonTimes.Add(lFriLogonTime); sFromTime = "1/1/" + DateTime.Now.Year + " "; sToTime = "1/1/" + DateTime.Now.Year + " "; sFromTime = sFromTime + cmbSatFromTime.SelectedItem.ToString(); sToTime = sToTime + cmbSatToTime.SelectedItem.ToString(); dtSatFromTime = DateTime.Parse(sFromTime); dtSatToTime = DateTime.Parse(sToTime); lSatLogonTime = new LogonTime(System.DayOfWeek.Saturday, dtSatFromTime, dtSatToTime); lstLogonTimes.Add(lSatLogonTime); // Access the Task Scheduler and change the trigger times for the Logoff Tasks for both Advik and Adhrit using (TaskService ts = new TaskService(@"\")) { TaskFolder myFolder = ts.GetFolder("Karthik's Custom Tasks"); if (myFolder.Tasks.Count > 0) { var myTasks = myFolder.Tasks.Where(t => t.Name.Equals(sSelectedUserName + " Force Logoff", StringComparison.OrdinalIgnoreCase)); Microsoft.Win32.TaskScheduler.Task myTask = myTasks.ElementAt(0); myTask.Definition.Triggers.Clear(); if (dtMonToTime.ToShortTimeString() == dtTueToTime.ToShortTimeString() && dtTueToTime.ToShortTimeString() == dtWedToTime.ToShortTimeString() && dtWedToTime.ToShortTimeString() == dtThuToTime.ToShortTimeString() && dtThuToTime.ToShortTimeString() == dtFriToTime.ToShortTimeString()) { var myWeekdayTrigger = new WeeklyTrigger { StartBoundary = dtMonToTime.AddSeconds(-30), DaysOfWeek = DaysOfTheWeek.Monday | DaysOfTheWeek.Tuesday | DaysOfTheWeek.Wednesday | DaysOfTheWeek.Thursday | DaysOfTheWeek.Friday, WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myWeekdayTrigger); } else { var myMondayTrigger = new WeeklyTrigger(DaysOfTheWeek.Monday) { StartBoundary = dtMonToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myMondayTrigger); var myTuesdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Tuesday) { StartBoundary = dtTueToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myTuesdayTrigger); var myWednesdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Wednesday) { StartBoundary = dtWedToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myWednesdayTrigger); var myThursdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Thursday) { StartBoundary = dtThuToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myThursdayTrigger); var myFridayTrigger = new WeeklyTrigger(DaysOfTheWeek.Friday) { StartBoundary = dtFriToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myFridayTrigger); } if (dtSunToTime.ToShortTimeString() == dtSatToTime.ToShortTimeString()) { var myWeekendTrigger = new WeeklyTrigger(DaysOfTheWeek.Saturday | DaysOfTheWeek.Sunday) { StartBoundary = dtSunToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(myWeekendTrigger); } else { var mySaturdayTrigger = new WeeklyTrigger(DaysOfTheWeek.Saturday) { StartBoundary = dtSatToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(mySaturdayTrigger); var mySundayTrigger = new WeeklyTrigger(DaysOfTheWeek.Sunday) { StartBoundary = dtSunToTime.AddSeconds(-30), WeeksInterval = 1 }; myTask.Definition.Triggers.Add(mySundayTrigger); } myTask.RegisterChanges(); } } if (cmbSunFromTime.SelectedIndex == cv_iSunFromTime && cmbSunToTime.SelectedIndex == cv_iSunToTime && cmbMonFromTime.SelectedIndex == cv_iMonFromTime && cmbMonToTime.SelectedIndex == cv_iMonToTime && cmbTueFromTime.SelectedIndex == cv_iTueFromTime && cmbTueToTime.SelectedIndex == cv_iTueToTime && cmbWedFromTime.SelectedIndex == cv_iWedFromTime && cmbWedToTime.SelectedIndex == cv_iWedToTime && cmbThuFromTime.SelectedIndex == cv_iThuFromTime && cmbThuToTime.SelectedIndex == cv_iThuToTime && cmbFriFromTime.SelectedIndex == cv_iFriFromTime && cmbFriToTime.SelectedIndex == cv_iFriToTime && cmbSatFromTime.SelectedIndex == cv_iSatFromTime && cmbSatToTime.SelectedIndex == cv_iSatToTime) { MessageBox.Show("No changes made that need to be saved!"); btnSave.Enabled = false; } else { byte[] byteMaskForUser; // Saving Permitted Logon Times based on selection byteMaskForUser = PermittedLogonTimes.GetByteMask(lstLogonTimes); usrpSelectedUser.PermittedLogonTimes = byteMaskForUser; usrpSelectedUser.Save(); MessageBox.Show("Successfully saved user time limit changes for " + usrpSelectedUser.Name + "!"); usrpSelectedUser.Dispose(); pctxLocalMachine.Dispose(); btnSave.Enabled = false; } }
private static void TamperTask(string task, string binary, string arguments, bool run, string host, string username, string password, string domain) { TaskService ts = AuthenticateToRemoteHost(host, username, password, domain); if (ts != null) { Task t = ts.GetTask(task); if (t == null) { Console.WriteLine("[+] Task not found!"); return; } if (binary.Split('-').Length == 5) // weak parsing, I know but YOLO { // we suppose we want to execute a COM object and not a binary ComHandlerAction action = new ComHandlerAction(new Guid(binary), string.Empty); // add to the top of the list, otherwise it will not execute Console.WriteLine("[+] Adding custom action to task.. "); t.Definition.Actions.Insert(0, action); // enable the task in case it's disabled Console.WriteLine("[+] Enabling the task"); t.Definition.Settings.Enabled = true; t.RegisterChanges(); GetTaskInfo(task, host, username, password, domain); Console.WriteLine("\r\n"); // run it if (run) { Console.WriteLine("[+] Triggering execution"); t.Run(); } Console.WriteLine("[+] Cleaning up"); // remove the new action t.Definition.Actions.Remove(action); t.RegisterChanges(); } else { ExecAction action = new ExecAction(binary, arguments, null); // add to the top of the list, otherwise it will not execute Console.WriteLine("[+] Adding custom action to task.. "); t.Definition.Actions.Insert(0, action); // enable the task in case it's disabled Console.WriteLine("[+] Enabling the task"); t.Definition.Settings.Enabled = true; t.RegisterChanges(); GetTaskInfo(task, host, username, password, domain); Console.WriteLine("\r\n"); // run it if (run) { Console.WriteLine("[+] Triggering execution"); t.Run(); } Console.WriteLine("[+] Cleaning up"); // remove the new action t.Definition.Actions.Remove(action); t.RegisterChanges(); } } }