【发布时间】:2012-10-05 14:20:00
【问题描述】:
我正在编写一个具有“LocalService”帐户类型的 Windows 服务。我有一个文件来存储它必须做的事情。
我还有一个 Windows 窗体 GUI,还可以访问该文件以添加/删除要执行的服务的操作实例。 (不知道它是否相关,但该服务从网络服务下载表格并将它们导出到用户有权访问的任何数据库。这些下载计划定期发生)
该服务将仅安装在用户帐户上。
我计划将文件存储在用户 appdata 文件夹中,但是在调试服务时出现错误“访问路径 [路径] 被拒绝”
您建议将此文件存储在哪里,以便两个程序都可以访问它? 谢谢
编辑:再看一点,我意识到
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
为服务和 Windows 窗体应用程序找到不同的路径。 并且该应用程序无法访问服务应用程序数据,就像服务似乎无法访问用户应用程序数据一样。所以同样的问题存在!
另一个编辑: 原来如此
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
可从本地服务和用户程序访问 - doh
...但有些地方似乎是只读的...
【问题讨论】:
-
只是为了明确......访问此数据的服务运行在与 gui 应用程序不同的 id 下,对吗? “本地系统”与 ? “该服务将仅安装在用户帐户上”这句话令人困惑。
-
也许文件系统不是存储这个的正确位置(如果多个用户需要保持他们的设置分开)。如果 GUI 应用直接与服务对话,并让服务维护一个单一的原始文件(保持用户隔离等),那可能是一个更好的模型?
-
@Pete 确实是本地系统。抱歉,我以前从未编写过 Windows 服务。服务和 GUI 包装在同一个安装程序中……我猜那句话是不正确的。
-
@Damien_The_Unbeliever 每台机器不会被超过一个用户使用该程序。多个用户超出了设计规范。您可能正在使用 gui 与服务交谈,但我不知道从哪里开始。我会调查的。谢谢
标签: c# windows-services appdata