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

New Post: Getting tasks and modifying their useraccounts

$
0
0

Hello,

 

im hoping to get some help on my problem.

im trying to make something that will change the password of a task if it has defined a username/password

if possible i would like to do if task has username admin in it then change password to xx

i already found the way how to update the task, only i need to find a way to list all tasks and see under what user they are running

i hope i was able to explain myself well enough.

Regards,

Reinier van Dijk


Source code checked in, #78863

$
0
0
* Fixed problem with MonthlyDOWTrigger.WeeksOfMonth that was throwing exception in UI if multiple weeks were selected under V1 * Added ability to read/write XML under V1. It will accept a full V2 XML string or file and only set the available properties allowed under V1. This will work under a pure V1 environment as well. I did a good amount of testing, but this was pretty complex so there could still be defects. This is separate from all the other functionality so nothing other than XML input/output under V1 should be affected by the changes.

New Post: Application error if two values for x day of week in month chosen in Vista/Win7

New Post: Copy to Many

$
0
0

Update, in source code version 78863 and soon in release 1.8.3, XML input and output are supported for V1 instances.

Updated Wiki: Examples

$
0
0
Below are some examples of how to use most of the functions of the library:

Using the editor
// Get the service on the local machine
using (TaskService ts = new TaskService())
{
   // Create a new task
   const string taskName = "Test";
   Task t = ts.AddTask(taskName, 
      new TimeTrigger() { StartBoundary = DateTime.Now + TimeSpan.FromHours(1), Enabled = false },
      new ExecAction("notepad.exe", "c:\\test.log", "C:\\"));

   // Edit task and re-register if user clicks Ok
   TaskEditDialog editorForm = new TaskEditDialog();
   editorForm.Editable = true;
   editorForm.RegisterTaskOnAccept = true;
   editorForm.Initialize(t);
   // ** The four lines above can be replaced by using the full constructor -- TaskEditDialog(t, true, true)
   editorForm.ShowDialog();

   // Remove the task we just created
   ts.RootFolder.DeleteTask(taskName);
}

Simple example
// Get the service on the local machine
using (TaskService ts = new TaskService())
{
   // Create a new task definition and assign properties
   TaskDefinition td = ts.NewTask();
   td.RegistrationInfo.Description = "Does something";
   td.Principal.LogonType = TaskLogonType.InteractiveToken;

   // Add a trigger that will fire the task at this time every other day
   DailyTrigger dt = (DailyTrigger)td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });
   dt.Repetition.Duration = TimeSpan.FromHours(4);
   dt.Repetition.Interval = TimeSpan.FromHours(1);

   // Add a trigger that will fire every week on Friday
   td.Triggers.Add(new WeeklyTrigger { StartBoundary = DateTime.Today + TimeSpan.FromHours(2), DaysOfWeek = DaysOfTheWeek.Friday });

   // Add an action that will launch Notepad whenever the trigger fires
   td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));

   // Register the task in the root folder
   const string taskName = "Test";
   ts.RootFolder.RegisterTaskDefinition(taskName, td);

   // Retrieve the task, change the trigger and re-register it
   Task t = ts.GetTask(taskName);
   td = t.Definition;
   td.Triggers[0].StartBoundary = DateTime.Today + TimeSpan.FromDays(7);
   ts.RootFolder.RegisterTaskDefinition(taskName, td);

   // Remove the task we just created
   ts.RootFolder.DeleteTask(taskName);
}

Enumerate all tasks
void EnumAllTasks()
{
   using (TaskService ts = new TaskService())
      EnumFolderTasks(ts.RootFolder);
}

void EnumFolderTasks(TaskFolder fld)
{
   foreach (Task task in fld.Tasks)
      ActOnTask(task);
   foreach (TaskFolder sfld in fld.SubFolders)
      EnumFolderTasks(sfld);
}

void ActOnTask(Task t)
{
   // Do something interesting here
}

Complex example
string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
bool preWin7 = true;

// Get the service on the local machine
using (TaskService ts = new TaskService())
{
   // Display version and server state
   Version ver = ts.HighestSupportedVersion;
   bool newVer = (ver >= new Version(1, 2));
   Console.WriteLine("Highest version: " + ver);
   Console.WriteLine("Server: {0} ({1})", ts.TargetServer, ts.Connected ? "Connected" : "Disconnected");

   // Output all of the running tasks
   Console.WriteLine("Running tasks:");
   foreach (RunningTask rt in ts.GetRunningTasks(true))
   {
      if (rt != null)
      {
         Console.WriteLine("+ {0}, {1} ({2})", rt.Name, rt.Path, rt.State);
         if (ver.Minor > 0)
            Console.WriteLine("  Current Action: " + rt.CurrentAction);
      }
   }

   // Output all the tasks in the root folder with their triggers and actions
   TaskFolder tf = ts.RootFolder;
   Console.WriteLine("\nRoot folder tasks ({0}):", tf.Tasks.Count);
   foreach (Task t in tf.Tasks)
   {
      try
      {
         Console.WriteLine("+ {0}, {1} ({2})", t.Name, t.Definition.RegistrationInfo.Author, t.State);
         foreach (Trigger trg in t.Definition.Triggers)
            Console.WriteLine(" + {0}", trg);
         foreach (Action act in t.Definition.Actions)
            Console.WriteLine(" = {0}", act);
      }
      catch { }
   }

   // Output an enumeration of all folders under the root
   Console.WriteLine("\n***Checking folder enum***");
   TaskFolderCollection tfs = tf.SubFolders;
   if (tfs.Count > 0)
   {
      Console.WriteLine("\nSub folders:");
      try
      {
         foreach (TaskFolder sf in tfs)
            Console.WriteLine("+ {0}", sf.Path);
      }
      catch (Exception ex)
      {
         Console.WriteLine(ex.ToString());
      }
   }

   // Display information about the Microsoft folder
   if (newVer)
   {
      Console.WriteLine("\n***Checking folder retrieval***");
      try
      {
         TaskFolder sub = tf.SubFolders["Microsoft"];
         Console.WriteLine("\nSubfolder path: " + sub.Path);
      }
      catch (NotSupportedException) { }
      catch (Exception ex)
      {
         Console.WriteLine(ex.ToString());
      }
   }

   Console.WriteLine("\n***Checking task creation***");
   try
   {
      // Create a new task definition and assign properties
      TaskDefinition td = ts.NewTask();
      td.Data = "Your data";
      td.Principal.UserId = user;
      td.Principal.LogonType = TaskLogonType.InteractiveToken;
      td.RegistrationInfo.Author = "dahall";
      td.RegistrationInfo.Description = "Does something";
      td.RegistrationInfo.Documentation = "Don't pretend this is real.";
      td.Settings.DisallowStartIfOnBatteries = true;
      td.Settings.Enabled = false;
      td.Settings.ExecutionTimeLimit = TimeSpan.FromHours(2);
      td.Settings.Hidden = false;
      td.Settings.IdleSettings.IdleDuration = TimeSpan.FromMinutes(20);
      td.Settings.IdleSettings.RestartOnIdle = false;
      td.Settings.IdleSettings.StopOnIdleEnd = false;
      td.Settings.IdleSettings.WaitTimeout = TimeSpan.FromMinutes(10);
      td.Settings.Priority = System.Diagnostics.ProcessPriorityClass.Normal;
      td.Settings.RunOnlyIfIdle = false;
      td.Settings.RunOnlyIfNetworkAvailable = false;
      td.Settings.StopIfGoingOnBatteries = true;
      if (newVer)
      {
         td.Principal.RunLevel = TaskRunLevel.Highest; //.LUA;
         //td.RegistrationInfo.SecurityDescriptorSddlForm = "O:COG:CGD::(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)";
         td.RegistrationInfo.Source = "Test App";
         td.RegistrationInfo.URI = new Uri("test://app");
         td.RegistrationInfo.Version = new Version(0, 9);
         td.Settings.AllowDemandStart = true;
         td.Settings.AllowHardTerminate = true;
         td.Settings.Compatibility = TaskCompatibility.V2;
         td.Settings.DeleteExpiredTaskAfter = TimeSpan.FromMinutes(1);
         td.Settings.MultipleInstances = TaskInstancesPolicy.StopExisting;
         td.Settings.StartWhenAvailable = true;
         td.Settings.WakeToRun = false;
         td.Settings.RestartCount = 5;
         td.Settings.RestartInterval = TimeSpan.FromSeconds(100);
      }

      if (preWin7)
      {
         // Create a trigger that fires 5 minutes after the system is booted
         BootTrigger bTrigger = (BootTrigger)td.Triggers.Add(new BootTrigger { Enabled = false });
         if (newVer) bTrigger.Delay = TimeSpan.FromMinutes(5);
      }

      // Create a trigger that fires every other day randomly between 6:00 a.m. and 8:00 a.m.
      DailyTrigger dTrigger = (DailyTrigger)td.Triggers.Add(new DailyTrigger());
      dTrigger.StartBoundary = DateTime.Today + TimeSpan.FromHours(6);
      dTrigger.DaysInterval = 2;
      if (newVer) dTrigger.RandomDelay = TimeSpan.FromHours(2);

      if (newVer)
      {
         if (preWin7)
         {
            // Create a trigger that will fire on a system security event
            EventTrigger eTrigger = (EventTrigger)td.Triggers.Add(new EventTrigger());
            eTrigger.SetBasic("Security", "VSSAudit", 25);
            eTrigger.ValueQueries.Add("Name", "Value");
         }

         // Create a trigger that fires 5 minutes after this task is registered
         td.Triggers.Add(new RegistrationTrigger { Delay = TimeSpan.FromMinutes(5) });

         if (preWin7)
         {
            // Create triggers that fire after various system states are changed
            td.Triggers.Add(new SessionStateChangeTrigger { StateChange = TaskSessionStateChangeType.ConsoleConnect, UserId = user });
            td.Triggers.Add(new SessionStateChangeTrigger { StateChange = TaskSessionStateChangeType.ConsoleDisconnect });
            td.Triggers.Add(new SessionStateChangeTrigger { StateChange = TaskSessionStateChangeType.RemoteConnect });
            td.Triggers.Add(new SessionStateChangeTrigger { StateChange = TaskSessionStateChangeType.RemoteDisconnect });
            td.Triggers.Add(new SessionStateChangeTrigger { StateChange = TaskSessionStateChangeType.SessionLock, UserId = user });
            td.Triggers.Add(new SessionStateChangeTrigger { StateChange = TaskSessionStateChangeType.SessionUnlock });
         }
      }

      // Create a trigger that fires when the system is idle
      td.Triggers.Add(new IdleTrigger());

      // Create a trigger that fires 15 minutes after the current user logs on and then every 1000 seconds after that
      LogonTrigger lTrigger = (LogonTrigger)td.Triggers.Add(new LogonTrigger());
      if (newVer)
      {
         lTrigger.Delay = TimeSpan.FromMinutes(15);
         lTrigger.UserId = user;
         lTrigger.Repetition.Interval = TimeSpan.FromSeconds(1000);
      }

      // Create a trigger that fires on the 3rd, 6th, 10th, 18th, and last days of July and November and stops triggering 90 days from now
      MonthlyTrigger mTrigger = (MonthlyTrigger)td.Triggers.Add(new MonthlyTrigger());
      mTrigger.DaysOfMonth = new int[] { 3, 6, 10, 18 };
      mTrigger.MonthsOfYear = MonthsOfTheYear.July | MonthsOfTheYear.November;
      if (newVer) mTrigger.RunOnLastDayOfMonth = true;
      mTrigger.EndBoundary = DateTime.Today + TimeSpan.FromDays(90);

      // Create a trigger that fires every day of the first and last week of December and January
      MonthlyDOWTrigger mdTrigger = (MonthlyDOWTrigger)td.Triggers.Add(new MonthlyDOWTrigger());
      mdTrigger.DaysOfWeek = DaysOfTheWeek.AllDays;
      mdTrigger.MonthsOfYear = MonthsOfTheYear.January | MonthsOfTheYear.December;
      if (newVer) mdTrigger.RunOnLastWeekOfMonth = true;
      mdTrigger.WeeksOfMonth = WhichWeek.FirstWeek;

      // Create a trigger that fires 1 minute from now and then every 15 minutes for the next 7 days.
      TimeTrigger tTrigger = (TimeTrigger)td.Triggers.Add(new TimeTrigger());
      tTrigger.StartBoundary = DateTime.Now + TimeSpan.FromMinutes(1);
      tTrigger.EndBoundary = DateTime.Today + TimeSpan.FromDays(7);
      if (newVer) tTrigger.ExecutionTimeLimit = TimeSpan.FromSeconds(15);
      if (newVer) tTrigger.Id = "Time test";
      tTrigger.Repetition.Duration = TimeSpan.FromMinutes(20);
      tTrigger.Repetition.Interval = TimeSpan.FromMinutes(15);
      tTrigger.Repetition.StopAtDurationEnd = true;

      // Create a trigger that fires every third week on Monday
      WeeklyTrigger wTrigger = (WeeklyTrigger)td.Triggers.Add(new WeeklyTrigger());
      wTrigger.DaysOfWeek = DaysOfTheWeek.Monday;
      wTrigger.WeeksInterval = 3;

      // Create an action which opens a log file in notepad
      td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));
      if (newVer)
      {
         // Create an action which shows a message to the interactive user
         td.Actions.Add(new ShowMessageAction("Running Notepad", "Info"));
         // Create an action which sends an email
         td.Actions.Add(new EmailAction("Testing", "dahall@codeplex.com", "user@test.com", "You've got mail.", "mail.myisp.com"));
         // Create an action which loads a COM object and calls the ITaskHandler interface
         td.Actions.Add(new ComHandlerAction(new Guid("CE7D4428-8A77-4c5d-8A13-5CAB5D1EC734"), string.Empty));
      }

      // Register the task definition (saves it) in the security context of the interactive user
      tf.RegisterTaskDefinition("Test", td, TaskCreation.CreateOrUpdate, null, null, TaskLogonType.InteractiveToken, null);
   }
   catch (Exception ex)
   {
      Console.WriteLine(ex.ToString());
   }

   // Display information about the newly created task
   Task runningTask = tf.Tasks["Test"];
   Console.WriteLine("\nNew task will run at " + runningTask.NextRunTime);
   Console.WriteLine("\nNew task triggers:");
   for (int i = 0; i < runningTask.Definition.Triggers.Count; i++)
      Console.WriteLine("  {0}: {1}", i, runningTask.Definition.Triggers[i]);
   Console.WriteLine("\nNew task actions:");
   for (int i = 0; i < runningTask.Definition.Actions.Count; i++)
      Console.WriteLine("  {0}: {1}", i, runningTask.Definition.Actions[i]);

   // Remove the task we just created since this was just a test
   tf.DeleteTask("Test");
}

Task history example
Only works with release 1.6.2 or source code drop 66948 and later and requires the inclusion of the TaskSchedulerEditor assembly.
TaskEventLog log = new TaskEventLog(task.Path);
List<ListViewItem> c = new List<ListViewItem>(100);
foreach (TaskEvent item in log)
   c.Add(new ListViewItem(new string[] { item.Level, item.TimeCreated.ToString(), item.EventId.ToString(),
      item.TaskCategory, item.OpCode, item.ActivityId.ToString() }));

New Post: Getting tasks and modifying their useraccounts

New Post: Application error if two values for x day of week in month chosen in Vista/Win7

$
0
0

Thanks David! Problems fixed, both in Win 7 and Win XP. Really appreciate it.

Source code checked in, #78866

$
0
0
* Fixed problem with Task.Export under V1 still throwing a not supported exception * Added Task.GetInstances method to retrieve all running instances of a task under V2. * Updated internal documentation

Released: Release 1.8.3 (Jul 03, 2012)

$
0
0
Many bug fixes, better localization support (adding Chinese), and Task Scheduler 1.0 support for XML since the 1.7.1 release. See Source Code for full details of changes. Also, all assemblies are now strongly named.

Download Descriptions
  • TaskScheduler.zip - Includes the base library (Microsoft.Win32.TaskScheduler.dll) with no UI code. Works with .NET 2.0 and higher. Add this assembly as a reference to interact with Task Scheduler on all systems with IE4 and later. This package is also available via NuGet with package name TaskScheduler.
  • TaskSchedulerEditor.zip - Includes the UI library (Microsoft.Win32.TaskSchedulerEditor.dll) with all supporting assemblies. Works with .NET 3.5 and higher. Add this assembly as a reference along with Microsoft.Win32.TaskScheduler.dll to get editor controls and dialogs that allow for viewing and editing tasks, triggers, actions, lists, etc. This package is also available via NuGet with package name TaskSchedulerEditor.
  • TaskSchedulerHelp.zip - Includes the Microsoft Help (VS2010) compatible help files for both the base and editor libraries. Extract all files and then run Install_TaskScheduler.bat to integrate the help.
Potentially Breaking Changes
There is a remote chance that some of the changes in this release may break your code. Please check if you have code that:
  • Makes specific assumptions about the underlying Kind (Utc, Local) of DateTime values for Trigger.StartBoundary and Trigger.EndBoundary.
  • Provides username, domain and password for connecting to remote servers. You must have all three as non-null, valid strings or all null.
  • V1 only: Assumes Task.State property does not provide the dynamic state of the task
  • V1 only: Assumes Task.Enabled property does not take effect until re-registering the task.
  • (1.8.2) Task.NextRunTime. For Task Scheduler 2.0, the return value was Dec 30, 1899 if there were no future run times. For 1.0, that value would have been DateTime.MinValue. Now all versions will return DateTime.MinValue if there are no future run times. While this is different from the native 2.0 library, it was deemed more appropriate to have consistency between the two libraries and with other .NET libraries.
  • (1.8.3) A number of the properties and methods related to reading and writing Xml that once threw NotV1SupportedException will now process the Xml.

Updated Release: Release 1.8.3 (Jul 03, 2012)

$
0
0
Many bug fixes, better localization support (adding Chinese), and Task Scheduler 1.0 support for XML since the 1.7.1 release. See Source Code for full details of changes. Also, all assemblies are now strongly named.

Download Descriptions
  • TaskScheduler.zip - Includes the base library (Microsoft.Win32.TaskScheduler.dll) with no UI code. Works with .NET 2.0 and higher. Add this assembly as a reference to interact with Task Scheduler on all systems with IE4 and later. This package is also available via NuGet with package name TaskScheduler.
  • TaskSchedulerEditor.zip - Includes the UI library (Microsoft.Win32.TaskSchedulerEditor.dll) with all supporting assemblies. Works with .NET 3.5 and higher. Add this assembly as a reference along with Microsoft.Win32.TaskScheduler.dll to get editor controls and dialogs that allow for viewing and editing tasks, triggers, actions, lists, etc. This package is also available via NuGet with package name TaskSchedulerEditor.
  • TaskSchedulerHelp.zip - Includes the Microsoft Help (VS2010) compatible help files for both the base and editor libraries. Extract all files and then run Install_TaskScheduler.bat to integrate the help.
Potentially Breaking Changes
There is a remote chance that some of the changes in this release may break your code. Please check if you have code that:
  • Makes specific assumptions about the underlying Kind (Utc, Local) of DateTime values for Trigger.StartBoundary and Trigger.EndBoundary.
  • Provides username, domain and password for connecting to remote servers. You must have all three as non-null, valid strings or all null.
  • V1 only: Assumes Task.State property does not provide the dynamic state of the task
  • V1 only: Assumes Task.Enabled property does not take effect until re-registering the task.
  • (1.8.2) Task.NextRunTime. For Task Scheduler 2.0, the return value was Dec 30, 1899 if there were no future run times. For 1.0, that value would have been DateTime.MinValue. Now all versions will return DateTime.MinValue if there are no future run times. While this is different from the native 2.0 library, it was deemed more appropriate to have consistency between the two libraries and with other .NET libraries.
  • (1.8.3) A number of the properties and methods related to reading and writing Xml that once threw NotV1SupportedException will now process the Xml.

New Post: Getting tasks and modifying their useraccounts

$
0
0

Thanks for the reply, this was exactly what i needed!

New Post: Unauthorized Exception when creating/deleting tasks

$
0
0

Hi,

I'm getting errors when trying to create or delete a tasks for the current user. I have not been able to repo this on my machine at all. However, I can repo this on any test machine (i.e. no VS installed and user is not running with admin permissions).

System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))   at Microsoft.Win32.TaskScheduler.V2Interop.ITaskFolder.RegisterTaskDefinition(String Path, ITaskDefinition pDefinition, Int32 flags, Object UserId, Object password, TaskLogonType LogonType, Object sddl)   at Microsoft.Win32.TaskScheduler.TaskFolder.RegisterTaskDefinition(String Path, TaskDefinition definition, TaskCreation createType, String UserId, String password, TaskLogonType LogonType, String sddl)   at Microsoft.Win32.TaskScheduler.TaskFolder.RegisterTaskDefinition(String Path, TaskDefinition definition)

Here's my code:

using (var ts = new TaskService())
{
var taskDef = ts.NewTask();
taskDef.RegistrationInfo.Description = string.Format(
                            Resources.Scheduled_Task_Desc_Format,
                            this.TargetEntity.FriendlyName
                        );
taskDef.Triggers.Add(GetTrigger(_interval));

taskDef.Actions.Add(
                 new ExecAction(
                     Assembly.GetEntryAssembly().Location,
                     "-s " + GetSyncFlowName(this.TargetEntity)
                 )
             );
ts.RootFolder.RegisterTaskDefinition(taskName, taskDef);
}

for deletes

var taskFilter = new Regex(
                     string.Concat("^", taskName, "$"),
                     RegexOptions.Singleline | RegexOptions.Compiled
                 );
// Find the existing instance of the task..
var olTask = ts.RootFolder.GetTasks(taskFilter).FirstOrDefault();
if (olTask != null)
{
	ts.RootFolder.DeleteTask(taskName);
}
 

New Post: How to get execution time of a task?

$
0
0

Hi,

I want to create a report which will contain task start time and task end time of all the tasks. Can any body help in this regard.

Thanks

Bishwajit Sahoo

 

 

New Post: How to connect remote servers tasks scheduler

$
0
0

Hi

I am using Windows Server 2003 from where I want to connect Window Server 2008 task scheduler in my web application. I tried to do following but wont work. I work for locally (2003) but wont for remote server (2008)

e.g.

TaskService m_TaskService = new TaskService(@"\\testServer2008", "testUser", "testDomain", "testPassword", true);

Logon failure: unknown user name or bad password

We tried different combination, but it wont work for remote server. Does I missing something? Please provide guide lines to me.

Regards

Ajay

Commented Issue: Doesn't diplay a Scheduled Task which is configured for Windows 7, Windows Server 2008R2 in the task collection [9007]

$
0
0
Hi there,

I created a task on Windows 2008R2 server and set configured it for Windows 7, Windows Server 2008 R2.

I wrote this simple code after referencing the microsoft.win2k.taskscheduler to get a list of tasks on that server.
Imports Microsoft.Win32.TaskScheduler
Module Module1

Sub Main()
Dim a As New TaskService
a.TargetServer = "MyServer"
Dim TaskCollection As TaskCollection = Nothing
TaskCollection = a.GetFolder("\").Tasks

End Sub

But it didn't return anything in the TaskCollection.

Can you please advise where I am going wrong?

Thanks,
RS
End Module
Comments: ** Comment from web user: callsajay **

Following works for me in Window Server 2003 and Windows Server 2008

TaskService ts = new TaskService();
Version ver = ts.HighestSupportedVersion;
bool newVer = (ver >= new Version(1, 2));
TaskFolder tf = ts.RootFolder;

Hope it will help full?

Best Regards
Ajay


New Post: Schedule via ASP.NET

$
0
0

Hi

TaskService ts = new TaskService();
Version ver = ts.HighestSupportedVersion;
bool newVer = (ver >= new Version(1, 2));
TaskFolder tf = ts.RootFolder;

 

This might works?

Ajay

 

New Post: Unauthorized Exception when creating/deleting tasks

New Post: How to get execution time of a task?

$
0
0

You likely will need to review each task's event history for that information. Look at using the TaskEventLog class in the TaskSchdulerEditor assembly.

New Post: How to connect remote servers tasks scheduler

$
0
0

Windows Server 2003 only has the 1.0 library locally. It will only connect to other Windows 2000 and 2003 servers. Windows Server 2003 R2 and later have the 2.0 libraries and can connect to either 1.0 or 2.0 capable servers.

New Post: Unauthorized Exception when creating/deleting tasks

$
0
0

Thanks Dahall. 
Does this mean that a application opened by a standard user would not be able to even schedule a taks that does not require elevated permissions?

I've verified that the standard user can schedule and delete tasks by going to Scheduled Tasks in Control Panel. The task needs to execute only for the current user and in the current user's context.

Viewing all 2206 articles
Browse latest View live




Latest Images