Delete task permissions issues

Topics: Errors, Examples
Mar 30 at 6:45 PM
Edited Mar 30 at 6:46 PM
Hello,

I was recently trying to figure out a permissions problem that cropped up when I tried to delete a scheduled task. I was working under an account that was a member of the administrator group, and I could create and update tasks without a problem, but when I tried to delete them I got the standard perms error: 'Delete Task HRESULT: 0x80070005 (E_ACCESSDENIED))'

Running the task (or visual studio when debugging) as an administrator corrected the problem, but I think that you might want to update your sample delete task code (or even the underlying library wrapper) to be a little more aware of the user's current permissions before trying a futile task:

void DeleteTask(taskName)
{
// A taskName by itself assumes the root folder (e.g. "MyTask")
// A taskName can include folders (e.g. "MyFolder\MySubFolder\MyTask")
Task t = ts.GetTask(taskName);
if (t == null) return;

WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
if (!principal.IsInRole(WindowsBuiltInRole.Administrator))
{
string account_name = WindowsIdentity.GetCurrent().Name;
throw new Exception($"Cannot delete scheduled task with your current identity '{account_name}' permissions level. You might need to run this application 'as administrator' even if you are using an administrator account.");
}

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

Warning people that extra permissions are required for task deletion would be a good step over just passing back a win api error message.

Nice work on this library otherwise, though.
Coordinator
Mar 31 at 3:54 PM
Great idea. That information is covered elsewhere in the documentation, but I agree that calling it out will help people newer to task management and the library. I'll make the change using your code today.
Today at 6:33 AM
dahall wrote:
Great idea. That information is covered elsewhere in the documentation, but I agree that calling it out will help people newer to task management and the library. I'll make the change using your code today.
Tell me please, will the confirmation be added to delete the task without restarting the application with administrator rights?