Получить каталог appdata\local folder в службе Windows С# - программирование
Подтвердить что ты не робот

Получить каталог appdata\local folder в службе Windows С#

Я пытаюсь получить путь к папке C:\Users\<username>\AppData\Local, используя

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

в службе Windows С#, но возвращает другой путь

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

Есть ли у кого-нибудь идеи, как это сделать правильно?

4b9b3361

Ответ 1

Вы используете службу под учетной записью пользователя? Если нет, служба будет использовать свой собственный профиль, как вы видите. Если эта услуга "зарегистрирована" пользователем, вы можете передать ее в службу и обойти локальную проверку. В противном случае попробуйте запустить службу под учетной записью пользователя (или создать для нее учетную запись).

Ответ 2

Папка 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;