J'ai un site Web ASP.NET (en C#) qui prend en charge les données utilisateur, puis tente de créer une tâche planifiée Windows. Bien sûr, cela fonctionne très bien sur la machine DEV, mais ne fonctionne pas sur le serveur. J'essaie de comprendre quelles autorisations sont requises sur l'utilisateur ASPNET (ou utilisateur Web anonyme) pour créer des tâches..NET créer une tâche planifiée sur le serveur échoue avec E_ACCESSDENIED
L'erreur est:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Stacktrace:
at MyScheduler.NewWorkItem(String TaskName, Guid& rclsid, Guid& riid, Object& obj)
at MyScheduler.CreateTask(String name)
Je l'ai fait quelques recherches, et la résolution proposée est d'utiliser le web.config « usurper l'identité » drapeau pour forcer l'application à exécuter en tant qu'utilisateur disposant des autorisations suffisantes, par opposition au compte ASPNET qui peut ne pas avoir ces autorisations.
Exemple:
<system.web>
<identity impersonate="true" />
</system.web>
Malheureusement, cela ne semble pas résoudre le problème. D'après la documentation que j'ai lue, cela devrait fonctionner en tant qu'utilisateur web anonyme, mais il semble que l'utilisateur n'ait pas assez d'autorisations.
J'ai modifié le paramètre pour spécifier un utilisateur de domaine spécifique qui se trouve être un administrateur sur la machine. Exemple:
<system.web>
<identity impersonate="true" userName="WindowsDomain\YourUserName" password="YourPassword" />
</system.web>
Cela a permis à l'application de créer avec succès la tâche planifiée Windows. Donc, évidemment, avec le bon ensemble d'autorisations Windows 2003, je peux obtenir l'application à effectuer comme il le fait dans l'environnement de développement. Toutefois, je ne suis pas sur le point de placer les informations d'identification de l'utilisateur du compte réseau ou administrateur de l'ordinateur en texte brut dans un fichier Web.config.
Est-ce que quelqu'un sait quelles autorisations doivent être définies pour que le compte ASPNET se comporte comme il le souhaite?
EDIT: L'API Win32 est utilisée pour créer des tâches planifiées.
Quelle méthode utilisez-vous pour créer les tâches planifiées? Win32, commande AT, commande SCHTASKS? – Kev
Bon point! Nous utilisons l'API Win32. Je vais modifier cela dans la question. –