服务在不同的路径中写入文件

时间:2014-06-20 13:59:39

标签: c# .net windows path windows-services

我有1个表单和1个服务应该写到同一个位置。 所以我在两者中添加了以下行。

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "myFolder" + Path.DirectorySeparatorChar + "log.txt");

问题是表单是在正确的位置写入文件但服务不是。
该服务正在C:\Windows\System32\config\systemprofile\AppData\Roaming\myFolder\log.txt中写入,表单在C:\Users\<user>\AppData\Roaming\myFolder\log.txt

我不能使用Windows事件记录器,我也要处理其他一些文件。

2 个答案:

答案 0 :(得分:1)

运行该服务的用户是NETWORK SERVICELOCAL SERVICE,而不是真实的用户帐户。在这些特殊帐户下,Environment.SpecialFolder.ApplicationData会转到systemprofile目录。

因此,为了解决这个问题,您需要更改服务运行的用户,或硬编码/确定要使用的正确用户目录。

答案 1 :(得分:0)

将文件夹名称放在配置文件中。或至少输入用户名,以便在服务中正确构建文件夹名称。