I am try to get C:\\Users\\<username>\\AppData\\Local
folder path using
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
in a C# Windows service, but it returns some other path
C:\Windows\ServiceProfiles\LocalService\AppData\Local
Does any have any idea how to do it correctly?
Are you running the service under a user account? If not, the service will use its own profile as you see. If this service is "logged into" by a user, then you could pass the folder to the service and bypass local checking. Otherwise, try running the service under a user account (or create an account for it).
The AppData folder for each user is stored in the registry.
Using this path:
const string regKeyFolders = @"HKEY_USERS\<SID>\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders";
const string regValueAppData = @"AppData";
Given a variable sid string containing the users sid, you can get their AppData path like this:
string path=Registry.GetValue(regKeyFolders.Replace("<SID>", sid), regValueAppData, null) as string;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.