22

我正在尝试使用获取C:\Users\<username>\AppData\Local文件夹路径

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

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

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

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

4

2 回答 2

9

您是否在用户帐户下运行该服务?如果没有,该服务将使用自己的配置文件,如您所见。如果用户“登录”了该服务,那么您可以将文件夹传递给该服务并绕过本地检查。否则,请尝试在用户帐户下运行该服务(或为其创建一个帐户)。

于 2012-06-26T05:47:41.203 回答
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;
于 2014-03-25T00:54:19.547 回答