一个进程可以通过不同的用户名(这两个进程运行在不同的用户名下)发出另一个进程创build的事件吗

Windows 7中发生:

我已经安装进程proc1.exe作为service.In proc1中,我创build新的进程proc2.exe通过创build会话ID和令牌,并传递给CreateProcessAsUser()。

在Proc2中,我正在创build一个正在等待信号的事件。 在Proc1中,当我停止服务时,通过OpenEvent和SetEvent发送信号给该事件。

如果我启动服务,proc1.exe在SYSTEM用户名下运行,并且proc2.exe在login用户名(Taskmanager)下运行。

当我停止服务时,Proc1正试图通过调用OpenEvent来发送信号。 但是OpenEvent返回NULL。

两个进程都在不同的用户下运行。 访问该事件是否是一个问题? 如果是这样,如何在不同的过程和用户​​下发出事件信号? 请帮我找出答案

你的事件可能是创建它的会话本地的,也就是说,如果Proc2创建了一个名为“ShutdownSystem”的事件,那么这个事件只能被该会话中的其他进程所了解,就像函数中的局部变量一样。

如果您希望事件对象以全局方式存在,并且可以从其他会话访问,则应在其前加“Global”(例如,将其命名为“Global \ ShutdownSystem”)。 系统会在全局命名空间中创建它。