Вне вызова функции proc и возвращен тип HANDLE (Windows C ++) - PullRequest
0 голосов
/ 17 февраля 2010

Мне нужно вызвать одну функцию, используя максимальные привилегии (NT AUTHORY \ System) из другого процесса (рабочий процесс модуля IIS7), работающего на том же локальном компьютере в гораздо менее привилегированном режиме (NT AUTHORY \ Network service).

Модуль IIS будет вызывать эту функцию, передавая некоторый текст (имя пользователя), и эта функция должна возвращать тип HADNLE, который будет закрыт после процесса с использованием функции CloseHandle.

(функция: LogonUser http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx)

Каков наилучший способ сделать это? COM +, разделяемая память, именованные каналы? У меня нет никакого опыта в этом программировании, поэтому мне нужна помощь. Я не знаю, как передать тип ручки с именованными каналами? (Я видел только примеры, которые передают только текстовые сообщения, а не указатели или другие типы данных).

Ответы [ 3 ]

1 голос
/ 17 февраля 2010

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

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

Что касается того, какой метод общения лучше всего подходит, это действительно зависит от ваших конкретных потребностей и вашего уровня опыта во всех отношениях.

0 голосов
/ 17 февраля 2010

Вы не можете передать дескриптор другому процессу, дескрипторы процесса локальны. Но вы можете использовать DuplicateHandle , чтобы создать клон вашего дескриптора для использования другим процессом. Только другой процесс может использовать дубликат. Другой процесс отвечает за вызов CloseHandle для него.

0 голосов
/ 17 февраля 2010

Просто FYI, РУЧКА - это просто 32-битное целое значение в Windows. Это не указатель на ячейку памяти.

...