Как приложение с поддержкой служб терминалов может получить личный каталог Windows пользователя?

Документация для GetWindowsDirectory гласит:

  • TS-Aware приложения получают актуальный каталог Windows.
  • Приложения, не поддерживающие TS, получают "личный" каталог Windows текущего пользователя.

Итак, я работаю над библиотекой классов C#, которая должна быть TS-Aware, потому что я не могу требовать, чтобы все приложения, использующие эту библиотеку, не были TS-Aware. По умолчанию C# должен быть TS-Aware.

Мне нужно поместить INI-файлы в каталог Windows, чтобы связаться с устаревшим приложением, которое НЕ поддерживает TS. Это работает без проблем для обычного пользователя, но не в сеансе служб терминалов.

Под терминальными услугами:

  • Устаревшее приложение использует INI-файл в "личном" каталоге Windows пользователя.
  • Библиотека C# использует INI-файл в системном каталоге Windows.

Мне необходимо:

  1. Обнаружение при запуске под терминальными службами. Я могу сделать это, проверив SystemInformation.TerminalServerSession флаг.
  2. В процессе TS-Aware найдите "личный" каталог пользователя Windows. Я не могу найти документацию, которая говорит мне, как это сделать.

1 ответ

Решение

Я думаю, что это всегда в папке пользователя в подкаталоге Windows, так что:

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "windows");
Другие вопросы по тегам