Может ли один процесс сигнализировать о событии, созданном другим процессом под другим именем пользователя (оба процесса работают под другим именем пользователя)?


Происходит в Windows 7:

Я установил процесс proc1.exe как service.In proc1, я создаю новый процесс proc2.exe путем создания идентификатора сеанса и токена и передачи в CreateProcessAsUser ().

В Proc2 я создаю одно событие, которое ожидает сигнала. В Proc1 я посылаю сигнал на это событие с помощью OpenEvent и SetEvent, когда я останавливаю службу.

Если я начинаю службу, proc1.exe работает под системным именем пользователя и proc2.exe работает под управлением loggedin имя пользователя (Диспетчер задач).

Когда я останавливаю службу, Proc1 пытается отправить сигнал, вызвав OpenEvent. Но OpenEvent возвращает NULL.

Оба процесса выполняются под разными пользователями. есть ли проблема получить доступ к этому событию ? если да, то как сигнализировать о событии под разными процессами и пользователями ? Пожалуйста, помогите мне это выяснить.....

1 2

1 ответ:

Ваше событие, вероятно, локально для сеанса, в котором оно было создано, т. е. если Proc2 создал событие с именем "ShutdownSystem", то это событие известно только другим процессам в этом сеансе, так же как локальные переменные в функции.

Если вы хотите, чтобы ваш объект события существовал глобальным образом и был доступен из других сеансов, вы должны добавить к нему префикс "Global\" (например, назовите его "Global\ShutdownSystem"). Затем система создаст его в глобальном пространстве имен.