Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
5 / 5 / 1
Регистрация: 05.11.2013
Сообщений: 58
1

Вызов нового процесса из impersonated thread

06.03.2014, 14:59. Показов 765. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго %time_of_day%!

Пытаюсь запустить процесс из имперсонифицированного потока.
LogonUser->DuplicateToken->SetThreadToken(в моем случае new WindowsIdentity), в результате
поток нормально имперсонифицируется, но при запуске из этого потока нового процесса тот запускается под учетными данными родительского процесса (неимперсонифицированными).
Соответственно, вопрос - каким образом запустить новый процесс с имперсонификацией из отдельного потока, или не париться, и запускать новый процесс заполняя структуру StartInfo вручную учетными данными пользователя?

Спасибо заранее!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2014, 14:59
Ответы с готовыми решениями:

Создание нового процесса
Добрый день, подскажите, как создать новый процесс, какие библиотеки подключать?

Вызов нового процесса
Я написал фрейм в котором 5 кнопочек, на нажатию на каждую из низ должен вызываеться exe-шник...

Неоднозначный вызов следующих методов или свойств - Thread.Thread()
Вот кусок кода, по которому у меня вопрос: ...

Порождение нового процесса и запуск программы в рамках порожденного процесса
Цель работы. Изучение программных средств создания процессов, а также простейших способов обмена...

3
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
06.03.2014, 21:03 2
Во-первых, попробуйте вместо SetThreadToken использовать ImpersonateLoggedOnUser/.../RevertToSelf.
Поскольку SetThreadToken, как следует из документации,
The SetThreadToken function assigns [b]an impersonation token[b/] to a thread.
The function can also cause a thread to stop using an impersonation token.
Во-вторых, вместо DuplicateToken используйте DuplicateTokenEx, и явно
укажите, что вам нужен primary token.
1
5 / 5 / 1
Регистрация: 05.11.2013
Сообщений: 58
07.03.2014, 10:06  [ТС] 3
А чем грозит отсутствие RevertToSelf в случае, если все дальнейшие шаги должны быть выполнены с имперсонификацией? Т.е. мне контекст текущего пользователя по большому счету и не нужен после того, как запустился привилегированный тред.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
07.03.2014, 19:59 4
Если не вызвать RevertToSelf - поток останется в контексте клиента.
0
07.03.2014, 19:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2014, 19:59
Помогаю со студенческими работами здесь

Запуск нового процесса в контейнере существующего процесса
Здравствуйте. Недавно задался целью запустить игру(minecraft), которая уже имеется на компьютере, с...

Создание нового потока Thread
Привет всем. Пытаюсь по клику на кнопку создать новый поток и чтобы внутри него выполнился метод...

Повторный вызов Thread.sleep();
Вопрос следующий: Допустим у меня есть поток, я из другого потока вызываю для него метод...

Вызов методов OLE в потоке (Thread)
Доброе время суток, Уважаемые! Переписываю одну программу. В программе выводятся в Excel различные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru