... Я хочу предоставить пользователю временные права администратора с помощью инструмента ac #.Поэтому я добавляю пользователя в группу пользователей-администраторов (эту работу выполняет фоновая служба, работающая под учетной записью привилегированной службы).Однако изменения вступают в силу только в новых сеансах (после выхода из системы / повторного входа в систему), что неудобно.Есть ли способ обновить текущий профиль пользователя?
Я пробовал несколько способов:
- через .net Process.Start со свойством LoadUserProfile, установленным в true.
- Следующая попытка была выполнена через WinI Api-функцию LoadUserProfile.
- Другим способом было выдать себя за пользователя с помощью .net Impersonation
Все эти попытки не распознавали изменения привилегий.Мне кажется, что существует кэшированный профиль пользователя, который содержит старые привилегии и перезагружается в любое время.
Единственный способ загрузки нового профиля - это команда runas, однако мы не хотим, чтобы пользователь игралвокруг с командной строкой, должно быть возможно сделать это из .net
Было бы здорово, если есть другой вариант?Может быть, есть инструмент, который может это сделать?
Хорошо, я повторно регистрирую пользователя, а затем использую новый токен в сочетании, например, с CreateProcessAsUser для запуска нового процесса.используя новый токен.Есть ли способ назначить текущей среде Windows новый токен и, следовательно, все действия, которые пользователь выполняет в Windows, используют этот новый токен?В противном случае я мог бы использовать некоторые другие инструменты, такие как lsrunas, чтобы открыть процесс в новом контексте и избежать вызовов winapi.
С нашей точки зрения, мы доверяем пользователю (это его личная записная книжка), он может установить программное обеспечение, которое онхочет (временно), но мы документируем каждую установку с помощью нашего инструмента.В фоновом режиме работает служба с локальной учетной записью администратора, которая управляет назначением группы и системной документацией.