【问题标题】:Deleting files using a service application使用服务应用程序删除文件
【发布时间】:2009-01-08 01:50:40
【问题描述】:

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

【问题讨论】:

    标签: .net file windows-services


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      “改变了运行服务的人” 是谁启动了该服务或该服务被配置为在哪个帐户下运行?

      一般来说,当一个服务作为标准应用程序运行时出现权限问题时,问题总是服务的配置帐户。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-14
        • 1970-01-01
        • 2012-11-09
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 2016-06-08
        相关资源
        最近更新 更多