Я пишу сервис, где мне необходимо получить папку AppData\Roaming. Пользуюсь следующей конструкцией Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Но получаю следующее значение: C:\WINDOWS\system32\config\systemprofile\AppData\Roaming\
Но если я запускаю консольное приложение и проделываю все тоже самое - получаю правильный результат. Может кто-нибудь, пожалуйста, объяснить в чем дело. Бьюсь несколько часов над проблемой и не могу никак решить.
C:\WINDOWS\system32\config\systemprofile - это путь к профилю для пользователя SYSTEM. Если вам нужен профиль другого пользователя, запускайте сервис от его имени, или найдите путь для конкретного пользователя (у SYSTEM для этого достаточно прав). Это можно сделать как-то так:
Получить токен пользователя через LogonUser
Загрузить его профиль через LoadUserProfile
Получить путь к нужной папке с помощью SHGetKnownFolderPath, передав ей полученный токен
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости