我有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事件记录器,我也要处理其他一些文件。
答案 0 :(得分:1)
运行该服务的用户是NETWORK SERVICE
或LOCAL SERVICE
,而不是真实的用户帐户。在这些特殊帐户下,Environment.SpecialFolder.ApplicationData
会转到systemprofile
目录。
因此,为了解决这个问题,您需要更改服务运行的用户,或硬编码/确定要使用的正确用户目录。
答案 1 :(得分:0)
将文件夹名称放在配置文件中。或至少输入用户名,以便在服务中正确构建文件夹名称。