0x80070005 (E_ACCESSDENIED) В приложении ASP.NET при попытке использовать планировщик задач Windows - PullRequest
1 голос
/ 08 апреля 2010

В настоящее время я работаю над приложением ASP.NET в VB.NET, и одной из его функций является использование планировщика заданий Windows. Приложению понадобится практически полный контроль над этим, поскольку ему нужно создавать, изменять, удалять и запускать задачи.

Я нашел эту библиотеку , чтобы помочь со всем этим, и она работает хорошо, но только локально на моей машине с Windows XP. Как только я развертываю приложение в IIS6 на Windows Server 2003 и получаю доступ к страницам, использующим мой объект планировщика, я получаю следующую ошибку.

Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

Я искал в сети различные решения, которые включают предоставление отдельным пользователям (и даже всем) разрешений для% windir% \ Tasks с использованием CACLS, которые не работали, а также с использованием олицетворения и добавлением IUSER в группу пользователей Backup Operations. который не будет работать, так как приложение ДОЛЖНО использовать встроенную аутентификацию Windows.

Одна вещь, которая меня смущает во всей этой ситуации, заключается в том, что пользователь, в который я вошел, так как при тестировании приложения вполне может удаленно использовать удаленный рабочий стол, войти на сервер и работать с планировщиком заданий. Кроме того, если я запускаю приложение локально в Visual Studio (все еще с тем же пользователем) и указываю приложение на планировщик задач сервера, оно работает нормально. В дополнение к этому, если я запускаю приложение с сервера и указываю на локальный планировщик задач, я получаю ту же ошибку «Отказано в доступе». Все это заставляет меня думать, что дело не в разрешениях планировщика задач, а в том, что они связаны с разрешениями для некоторых компонентов, которые пытается использовать библиотека планировщика задач.

Кто-нибудь знает, что я мог сделать, чтобы решить эту проблему, или даже указатель в правильном направлении, поскольку это сводило меня с ума уже более суток. Должен сказать, что я новичок в вопросах IIS, олицетворения и безопасности Windows Server.

Большое спасибо

1 Ответ

0 голосов
/ 05 декабря 2010

Привет, я знаю, что я могу опоздать. Вы можете либо задать задачу для запуска в NT AUTHORITY \ SYSTEM, для этого используйте эту

(C #)

string NULL =ноль ;task.SetAccountInformation ("", NULL);

и для его установки для текущего пользователя укажите имя пользователя

string username = "your xp username";
или string username = System.Security.Principal.WindowsIdentity.GetCurrent (). Name;string NULL = null;

task.SetAccountInformation (username, NULL);

, который будет работать для вас, я надеюсь !!!!и дай мне знать, как это было !!!

...