Quantcast
Channel: Task Scheduler Managed Wrapper
Viewing all articles
Browse latest Browse all 2206

New Post: Is there a way to find the logged in user's "domain\name" when creating a task in code running as SYSTEM?

$
0
0
Here's what works for one user and many users (hopefully for the latter) :D
       private static void CreateSheduledTask1(string targetPathDir)
        {
            try
            {
                // Get the service on the local machine
                using (TaskService ts = new TaskService())
                {
                    string folder = "Luna Sleep Tasks";
                    if (!ts.RootFolder.SubFolders.Exists("\\" + folder))
                    {
                        ts.RootFolder.CreateFolder(folder);
                    }
                    TaskFolder tf = ts.GetFolder(folder);
                    // Create a new task definition and assign properties
                    TaskDefinition td = ts.NewTask();
                    td.Settings.AllowDemandStart = true;
                    td.Settings.Compatibility = TaskCompatibility.V2;
                    td.Settings.Enabled = true;
                    td.Settings.RunOnlyIfIdle = false;
                    td.Settings.IdleSettings.StopOnIdleEnd = true;
                    td.Settings.IdleSettings.RestartOnIdle = false;
                    td.Settings.DisallowStartIfOnBatteries = false;
                    td.Settings.DisallowStartOnRemoteAppSession = false;
                    td.Settings.UseUnifiedSchedulingEngine = true;
                    td.Settings.WakeToRun = false;
                    td.Settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew;
                    td.Settings.RunOnlyIfNetworkAvailable = false;
                    td.Settings.ExecutionTimeLimit = new TimeSpan(72, 0, 0);
                    td.Settings.Priority = ProcessPriorityClass.Normal;

                    td.RegistrationInfo.Description = "Created by Luna Sleep Service installer.";

                    DailyTrigger dt = new DailyTrigger();
                    dt.Enabled = false;
                    dt.StartBoundary = System.DateTime.Now;
                    td.Triggers.Add(dt);

                    td.Principal.RunLevel = TaskRunLevel.Highest;

                    td.Actions.Add(new ExecAction(targetPathDir + "\\LunaSleep.exe", null, null));

                    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
                    ManagementObjectCollection collection = searcher.Get();
                    string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];

                    MessageBox.Show("moc user:" + username);

                    
                    tf.RegisterTaskDefinition("Luna Sleep Task", td,
                        TaskCreation.CreateOrUpdate,
                        username,
                        null,
                        TaskLogonType.InteractiveToken,
                        null);
                   
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private static void CreateSheduledTaskManyUsers(string targetPathDir)
        {
            try
            {
                // Get the service on the local machine
                using (TaskService ts = new TaskService())
                {
                    string folder = "Luna Sleep Tasks";
                    if (!ts.RootFolder.SubFolders.Exists("\\" + folder))
                    {
                        ts.RootFolder.CreateFolder(folder);
                    }
                    TaskFolder tf = ts.GetFolder(folder);
                    // Create a new task definition and assign properties
                    TaskDefinition td = ts.NewTask();
                    td.Settings.AllowDemandStart = true;
                    td.Settings.Compatibility = TaskCompatibility.V2;
                    td.Settings.Enabled = true;
                    td.Settings.RunOnlyIfIdle = false;
                    td.Settings.IdleSettings.StopOnIdleEnd = true;
                    td.Settings.IdleSettings.RestartOnIdle = false;
                    td.Settings.DisallowStartIfOnBatteries = false;
                    td.Settings.DisallowStartOnRemoteAppSession = false;
                    td.Settings.UseUnifiedSchedulingEngine = true;
                    td.Settings.WakeToRun = false;
                    td.Settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew;
                    td.Settings.RunOnlyIfNetworkAvailable = false;
                    td.Settings.ExecutionTimeLimit = new TimeSpan(72, 0, 0);
                    td.Settings.Priority = ProcessPriorityClass.Normal;

                    td.RegistrationInfo.Description = "Created by Luna Sleep Service installer.";

                    DailyTrigger dt = new DailyTrigger();
                    dt.Enabled = false;
                    dt.StartBoundary = System.DateTime.Now;
                    td.Triggers.Add(dt);

                    td.Principal.RunLevel = TaskRunLevel.Highest;

                    td.Actions.Add(new ExecAction(targetPathDir + "\\LunaSleep.exe", null, null));

                    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
                    ManagementObjectCollection collection = searcher.Get();

                    foreach(ManagementObject o in collection)
                    {
                        
                        try
                        {
                            username = (string)o["UserName"];

                            MessageBox.Show("moc user:" + username);


                            tf.RegisterTaskDefinition("Luna Sleep Task", td,
                                TaskCreation.CreateOrUpdate,
                                username,
                                null,
                                TaskLogonType.InteractiveToken,
                                null);
                        }
                        catch
                        {
                            MessageBox.Show(username + " didn't work");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        static string username;

Viewing all articles
Browse latest Browse all 2206

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>