2009-01-08 6 views
1

J'utilise un FileSystemWatcher dans VS2005 pour surveiller les répertoires et penser à changer l'application en service. Eveverything woks bien jusqu'à ce que le service tente de supprimer un fichier. En envoyant l'exception à l'eventviewer, j'obtiens une exception System.UnauthorizedAccessException. Le fichier en question (testing) peut être supprimé par le même code FileSystemWatcher lorsqu'il est exécuté dans un formulaire. J'ai vérifié les droits de LocalService au dossier et ai même changé qui a couru le service. J'ai commenté le code sur le FileSystemWatcher et ne peux toujours pas supprimer les fichiers en utilisant le service J'essaie d'utiliser File.Delete (filename). Penser le propblem pourrait être avec "Fichier", j'ai essayé un fichier. Copie (nomfichier, nouveaufichier) et cela fonctionne bienSuppression de fichiers à l'aide d'une application de service

Répondre

1

Essayez d'utiliser un ancien compte d'utilisateur pour le service au lieu d'utiliser LocalSystem. De cette façon, vous pouvez accorder des autorisations spécifiques pour le service et ne pas le laisser accéder à tout ce que fait LocalSystem.

En outre, j'ai trouvé que FileSystemWatcher est plus d'une douleur que son bien pour. Souvent, il va détecter la présence d'un fichier avant qu'il ne soit complètement écrit, et cela provoque toutes sortes de problèmes lorsque vous travaillez avec le fichier. Essayez d'utiliser une interrogation (vérifiez le dossier toutes les quelques secondes - N'utilisez pas la classe Timer - its got issues of its own!) Pour les nouveaux fichiers.

0

"a changé le propriétaire du service" A-t-il été celui qui a démarré le service ou le compte pour lequel le service a été configuré?

En général, lorsqu'un service a des problèmes de droits, il ne fonctionne pas lorsqu'il est exécuté en tant qu'application standard, le problème est invariablement le compte configuré du service.

Questions connexes