发生在 Windows 7 中:
我已安装进程 proc1.exe 作为服务。在 proc1 中,我通过创建 session ID 和 token 并传递给 CreateProcessAsUser() 来创建新进程 proc2.exe。
在 Proc2 中,我正在创建一个正在等待信号的事件。 在 Proc1 中,当我停止服务时,我通过 OpenEvent 和 SetEvent 向该事件发送信号。
如果我启动服务,proc1.exe 会在 SYSTEM 用户名下运行,proc2.exe 会在登录用户名(Taskmanager)下运行。
当我停止服务时,Proc1 尝试通过调用 OpenEvent 发送信号。但 OpenEvent 返回 NULL。
两个进程都在不同的用户下运行。访问该事件有问题吗? 如果是这样,如何在不同进程和用户下发出事件信号? 请帮我找出答案......
最佳答案
您的事件可能是创建它的 session 的本地事件,即,如果 Proc2 创建了一个名为“ShutdownSystem”的事件,则该事件仅对该 session 中的其他进程所知,就像函数中的局部变量一样。
如果您希望事件对象以全局方式存在并可从其他 session 访问,则应在其前面加上“Global\”前缀(例如,将其命名为“Global\ShutdownSystem”)。然后系统会在全局命名空间中创建它。
关于windows - 一个进程可以向另一个进程在不同用户名下创建的事件发出信号(两个进程在不同用户名下运行)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9000010/