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

在C#windows服务中获取appdata\local文件夹路径,c#,windows-services,C#,Windows Services,我正在尝试使用获取C:\Users\\AppData\Local文件夹路径 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 在C#Windows服务中,但它返回其他路径 C:\Windows\ServiceProfiles\LocalService\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\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders";
const string regValueAppData = @"AppData";
const string regKeyFolders=@“HKEY\U用户\\软件\Microsoft\Windows\CurrentVersion\Explorer\Shell文件夹”;
常量字符串regValueAppData=@“AppData”;
给定包含用户sid的变量sid字符串,可以按如下方式获取其AppData路径:

string path=Registry.GetValue(regKeyFolders.Replace("<SID>", sid), regValueAppData, null) as string;
string path=Registry.GetValue(regKeyFolders.Replace(“,sid),regValueAppData,null)作为字符串;

部署应用程序时会发生这种情况吗?这很正常,因为您的服务是在
本地系统下运行的
帐户下运行的。拿走-1个人集(没有评论)-对我来说似乎是一个合理的问题,许多人可能会落入陷阱。@Wolf5370:是我。我也准备标记它,但我注意到了你的评论。我认为用户只是想要一个特定的用户配置文件文件夹,而不是任何配置文件文件夹。在我看来,这里发生的是正常的行为,需求被夸大了。让我改变一下问题,我想得到路径“C:\Users\username\AppData\Local”,那么我应该使用什么“ServiceAccount”来实现这一点?或者我如何在C#windows服务中获取此路径。当你说“用户名”时,你是指真正用户的文件夹,还是只想为你的应用程序创建一个文件夹?正如库恩在评论中所说,如果你想让某个特定的用户不主动登录并传递信息,那么这是一个安全风险,因此也是一个问题。Coon和我说的都是正确的,但我们回答的问题不同,因此您需要指定您的服务如何使用以及它需要什么访问权限。然后也许我们可以进一步升级。username是当前登录的用户。请注意,此注册表项似乎不是为内置用户设置的,例如
LocalSystem