服务将文件写入不同的path

我有1个表格和1个服务应该写在同一个位置。 所以我在两者中join了下面的一行。

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

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

我不能使用Windows事件logging器,我也得处理一些其他的文件。

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

所以要解决这个问题,你需要改变服务运行的用户,或者硬编码/确定正确的用户目录。

将文件夹名称放在配置文件中。 或者至少把用户的名字,所以你可以在服务中正确建立文件夹名称。