Олицетворение потока с отфильтрованным токеном пользователя

Я пишу приложение, которое является своего рода корпоративной настройкой. Это приложение выполняет много задач, некоторые из них требуют повышения прав.

Я включил манифест, чтобы при запуске приложения UAC запрашивал у пользователя повышение прав.

Одной из этих задач является сопоставление некоторых сетевых дисков (с WNetAddConnection) к удаленному серверу. Эти сопоставления должны быть постоянными. Пока все хорошо, за исключением того, что когда приложение закрывается, пользователь не может видеть диски, которые приложение только что подключило.

После некоторых исследований ( /questions/37489496/obschie-kollektsii-powershell/37489513#37489513) я понимаю, что когда пользователь входит в систему, он получает 2 токена, один с низкими привилегиями, другой с полными привилегиями, тот, который используется запустить процесс, когда требуется повышение прав.

Мой вопрос: возможно ли, чтобы мое приложение запустило поток, который получает токен отфильтрованного текущего пользователя таким образом, чтобы, когда задачи приложения были выполнены, пользователь мог видеть сетевые диски в проводнике?

Возможно ли выдать себя за нить этим токеном?

Я знаю об этих возможных обходных путях:

  • Перестройка приложения так, чтобы только некоторые конкретные задачи, для которых требуется повышение прав, были инкапсулированы в COM-объект.
  • Настройка реестра с EnableLinkedConnections настройка (требует перезапуска сеанса пользователя)

но по некоторым причинам ни одно из этих решений не является вариантом.

Любая помощь будет принята с благодарностью

1 ответ

Решение

Мы столкнулись с той же проблемой при сопоставлении дисков из нашего повышенного установщика.

То, как мы справились с этим, заключается в том, что мы сначала сопоставляем диски из установщика, который, конечно, работает в повышенном состоянии UAC. Последнее, что делает установщик, - это создает текстовый файл, в котором перечислены буквы дисков и их подключенные сетевые диски. Затем мы запускаем вторую программу без прав, которая выполняет сопоставление для пользователя. Эти отображения являются постоянными.

Для нас это сработало более тысячи раз по всему миру на машинах клиентов.

Другие вопросы по тегам