一个Process可以用不同的用户名表示由另一个进程创建的事件(两个进程都在不同的用户名下运行)吗?

时间:2012-01-25 09:01:06

标签: windows events windows-7 event-log createprocess

在Windows 7中发生:

我已安装进程proc1.exe作为服务。在proc1中,我通过创建会话ID和令牌并传递给CreateProcessAsUser()来创建新进程proc2.exe。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您的事件可能是创建它的会话的本地事件,即如果Proc2创建了一个名为“ShutdownSystem”的事件,那么该事件仅在该会话中的其他进程中已知,就像函数中的局部变量一样。

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