// Decompiled with JetBrains decompiler // Type: TaskScheduler.ScheduledTasks // Assembly: AutoKMS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: D1CED9E3-1FC7-49B8-B3AC-44976AB7F6E4 // Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\HackTool.Win32.KMSAuto.i-f317ba4d4051fad64a0aa45b587fa3dcea795bac30acec2872779abe31a07cbe.exe using System; using System.Runtime.InteropServices; using TaskSchedulerInterop; namespace TaskScheduler { public class ScheduledTasks : IDisposable { private ITaskScheduler its; internal static Guid ITaskGuid = Marshal.GenerateGuidForType(typeof (ITask)); internal static Guid CTaskGuid = Marshal.GenerateGuidForType(typeof (CTask)); public ScheduledTasks(string computer) : this() { this.its.SetTargetComputer(computer); } public ScheduledTasks() => this.its = (ITaskScheduler) new CTaskScheduler(); private string[] GrowStringArray(string[] s, uint n) { string[] strArray = new string[(long) s.Length + (long) n]; for (int index = 0; index < s.Length; ++index) strArray[index] = s[index]; return strArray; } public string[] GetTaskNames() { string[] s = new string[0]; int num = 0; IEnumWorkItems EnumWorkItems; this.its.Enum(out EnumWorkItems); uint Fetched; IntPtr Names; while (EnumWorkItems.Next(10U, out Names, out Fetched) >= 0 && Fetched > 0U) { s = this.GrowStringArray(s, Fetched); while (Fetched > 0U) { IntPtr ptr = Marshal.ReadIntPtr(Names, (int) --Fetched * IntPtr.Size); s[num++] = Marshal.PtrToStringUni(ptr); Marshal.FreeCoTaskMem(ptr); } Marshal.FreeCoTaskMem(Names); } return s; } public Task CreateTask(string name) { Task task = this.OpenTask(name); if (task != null) { task.Close(); throw new ArgumentException("The task \"" + name + "\" already exists."); } try { object obj; this.its.NewWorkItem(name, ref ScheduledTasks.CTaskGuid, ref ScheduledTasks.ITaskGuid, out obj); return new Task((ITask) obj, name); } catch { return (Task) null; } } public bool DeleteTask(string name) { try { this.its.Delete(name); return true; } catch { return false; } } public Task OpenTask(string name) { try { object obj; this.its.Activate(name, ref ScheduledTasks.ITaskGuid, out obj); return new Task((ITask) obj, name); } catch { return (Task) null; } } public void Dispose() { Marshal.ReleaseComObject((object) this.its); this.its = (ITaskScheduler) null; } } }