Запуск административного интерактивного процесса при входе обычного пользователя
У меня есть системная служба, которая создает вспомогательный интерактивный процесс в качестве администратора, чтобы он мог получить доступ к некоторым ресурсам, связанным с рабочим столом, включая функцию BlockInput () и функции NVIDIA NVIDIA, которые нельзя запустить из службы. Когда вошедший в систему пользователь был членом Администраторов, сработало следующее:
Установить уровни привилегий, включая SE_TCB_NAMEПолучить идентификатор активной сессии с помощью WTSGetActiveConsoleSessionId ()Войдите в систему по идентификатору сеанса с помощью WTSQueryUserToken ()GetTokenInformation () с TokenLinkedTokenDuplicateTokenEx () с SecurityImpersonationЗапустить процесс с помощью CreateProcessAsUser ()Однако, когда текущий сеанс вошел в систему как обычный пользователь, а не как в «Администраторах», шаг 4. завершается неудачей, предположительно потому, что у обычного пользователя нет токена административного уровня, связанного с ним. Какое решение здесь? Я предполагаю, что мне нужно получить токен одного из пользователей-администраторов, но как мне это сделать? И если этот пользователь не вошел в систему, может ли он по-прежнему получать доступ к функциям, интерактивным с текущим рабочим столом?