Как приложение с поддержкой служб терминалов может получить личный каталог Windows пользователя?
Документация для GetWindowsDirectory гласит:
- TS-Aware приложения получают актуальный каталог Windows.
- Приложения, не поддерживающие TS, получают "личный" каталог Windows текущего пользователя.
Итак, я работаю над библиотекой классов C#, которая должна быть TS-Aware, потому что я не могу требовать, чтобы все приложения, использующие эту библиотеку, не были TS-Aware. По умолчанию C# должен быть TS-Aware.
Мне нужно поместить INI-файлы в каталог Windows, чтобы связаться с устаревшим приложением, которое НЕ поддерживает TS. Это работает без проблем для обычного пользователя, но не в сеансе служб терминалов.
Под терминальными услугами:
- Устаревшее приложение использует INI-файл в "личном" каталоге Windows пользователя.
- Библиотека C# использует INI-файл в системном каталоге Windows.
Мне необходимо:
- Обнаружение при запуске под терминальными службами. Я могу сделать это, проверив
SystemInformation.TerminalServerSession
флаг. - В процессе TS-Aware найдите "личный" каталог пользователя Windows. Я не могу найти документацию, которая говорит мне, как это сделать.
1 ответ
Решение
Я думаю, что это всегда в папке пользователя в подкаталоге Windows, так что:
System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "windows");