使用服务应用程序删除文件

时间:2009-01-08 01:50:40

标签: .net file windows-services

我在VS2005中使用FileSystemWatcher来监视目录,并考虑将应用程序更改为服务。在服务尝试删除文件之前,Eveverything很好。将异常发送到eventviewer,我得到一个System.UnauthorizedAccessException。在表单中运行时,相同的FileSystemWatcher代码可以删除有问题的文件(测试)。我检查了该文件夹的LocalService权限,甚至更改了运行该服务的人员。我注释掉了有关FileSystemWatcher的代码,但仍然无法使用该服务删除文件 我试图使用File.Delete(filename)。考虑到问题可能是“文件”,我尝试了一个File.Copy(文件名,新文件名),并且工作正常

2 个答案:

答案 0 :(得分:1)

尝试使用普通的旧用户帐户代替使用LocalSystem。这样,您可以为服务授予特定权限,而不是让它可以访问LocalSystem所做的所有事情。

另外,我发现FileSystemWatcher比它的好处更痛苦。通常它会在文件完全写入之前检测到文件的存在,这会在处理文件时导致各种问题。尝试使用轮询(每隔几秒检查一次文件夹 - 不要使用Timer类 - its got issues of its own!)来获取新文件。

答案 1 :(得分:0)

“改变了谁运行服务” 是谁启动了服务或服务配置为在其下运行的帐户?

通常,当服务存在权限问题时,如果作为标准应用程序运行,则无法获得该问题,问题始终是服务配置的帐户。