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

我尝试使用C:\Users\\AppData\Local文件夹路径

 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

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

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

有没有任何想法如何正确地做到这一点?

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

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

使用此路径:

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

给定包含用户sid的变量sid字符串,您可以像这样获取其AppData路径:

 string path=Registry.GetValue(regKeyFolders.Replace("", sid), regValueAppData, null) as string;