Как я получаю маркер действительного пользователя для CreateProcessAsUser?

Как предположил Дэниел, использование общедоступной корзины s3 для обслуживания файлов в этом случае работает и намного проще, чем кодирование, как я делал.

5
задан Jon Seigel 28 March 2010 в 20:54
поделиться

1 ответ

У Вас есть несколько проблем здесь, таким образом, я попытаюсь обратиться к ним отдельно, и можно исправить меня, если я неправильно понял:

  1. У Вас, кажется, есть сервис и пользовательское приложение, которое не может выполнить определенную функциональность одновременно. Для достижения этого, Вы сделали, чтобы сервис остановил приложение, выполнил специальную функциональность, затем перезапустил приложение. Если это корректно затем, по-моему, у Вас есть недостаток дизайна. Вместо остановки, затем перезапуска приложения необходимо координировать доступ к совместно используемому ресурсу через взаимное исключение с помощью именованного взаимного исключения и/или с помощью метода IPC, такого как именованные каналы для передачи намерений.

  2. Пользовательский маркер всегда только допустим в процессе который названный OpenProcessToken? Да, маркерный дескриптор, который Вы получили, является индексом в таблицу дескриптора процесса, это не непосредственно передаваемо. Необходимо было бы использовать DuplicateHandle, который может быть тем, что Вы хотите, но могли быть грязными.

  3. Вы хотите найти лучший способ заставить маркер пользователя запускать приложение в пользователя (интерактивный?) сессия. Если это верно, лучший способ состоит в том, чтобы получить маркер и использование сессии пользователя это. Можно проверить эту статью и пример кода, это находится в C#, но должно быть относительно легко передать предпочтительному языку.

Править: Обновленный для включения Windows 2000. Так как Вы выполняете сервис в соответствии с СИСТЕМНОЙ учетной записью, это может открыть дескриптор для самого процесса (при необходимости, процесс может отправить свой идентификатор процесса). Это может затем открыть маркер, присоединенный к тому процессу, копировать его и использовать результирующий маркер для запуска (или перезапуск) целевого приложения.

3
ответ дан 15 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: