在C#windows服务中获取appdata \ local文件夹路径

时间:2012-06-26 05:38:25

标签: c# windows-services

我尝试使用

获取C:\Users\<username>\AppData\Local文件夹路径
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

在C#Windows服务中,但它返回一些其他路径

C:\Windows\ServiceProfiles\LocalService\AppData\Local

有没有人知道如何正确地做到这一点?

2 个答案:

答案 0 :(得分:7)

您是否在用户帐户下运行该服务?如果没有,服务将使用您自己的个人资料。如果此服务已登录&#34;用户可以将文件夹传递给服务并绕过本地检查。否则,请尝试在用户帐户下运行该服务(或为其创建帐户)。

答案 1 :(得分:3)

每个用户的AppData文件夹存储在注册表中。

使用此路径:

const string regKeyFolders = @"HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders";
const string regValueAppData = @"AppData";

给定一个包含用户sid的变量sid字符串,你可以得到这样的AppData路径:

string path=Registry.GetValue(regKeyFolders.Replace("<SID>", sid), regValueAppData, null) as string;
相关问题