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

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

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

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

если я запускаю службу, proc1.exe выполняется под именем пользователя SYSTEM, а proc2.exe работает под именем пользователя, вошедшего в систему (Taskmanager).

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

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

1 Ответ

2 голосов
/ 25 января 2012

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

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

...