一个进程可以向另一个进程在不同用户名下创建的事件发出信号(两个进程在不同用户名下运行)吗?
发生在 Windows 7 中:
我已安装进程 proc1.exe 作为服务。在 proc1 中,我通过创建会话 id 和令牌并传递给 CreateProcessAsUser() 来创建新进程 proc2.exe。
在 Proc2 中,我正在创建一个正在等待信号的事件。 在 Proc1 中,当我停止服务时,我通过 OpenEvent 和 SetEvent 向该事件发送信号。
如果我启动服务,proc1.exe 在系统用户名下运行,proc2.exe 在登录用户名(任务管理器)下运行。
当我停止服务时,Proc1 尝试通过调用 OpenEvent 发送信号。但 OpenEvent 返回 NULL。
两个进程都在不同的用户下运行。访问该事件有问题吗? 如果是这样,如何在不同进程和用户下发出事件信号? 请帮我找出答案......
Happening in Windows 7:
I have installed process proc1.exe as service.In the proc1, i am creating new process proc2.exe by creating session id and token and passing to CreateProcessAsUser().
In the Proc2, i am creating one event which is waiting for signal.
In the Proc1, am sending the signal to that event by OpenEvent and SetEvent when i stop service.
if i start service, proc1.exe is running under SYSTEM username and proc2.exe is running under loggedin username(Taskmanager).
When i stop service, Proc1 is trying to send signal by calling OpenEvent. But OpenEvent returns NULL.
Both processes are running under different user. is it a problem to access that event ?
if so, how to signal the event under different process and user ?
PLease help me to find out.....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的事件可能是创建它的会话的本地事件,即,如果 Proc2 创建了一个名为“ShutdownSystem”的事件,则该事件仅对该会话中的其他进程已知,就像函数中的局部变量一样。
如果您希望事件对象以全局方式存在并可从其他会话访问,则应在其前面加上“Global\”前缀(例如将其命名为“Global\ShutdownSystem”)。然后系统将在全局命名空间中创建它。
Your event is probably local to the session where it's created, i.e. if Proc2 created an event named "ShutdownSystem", then that event is only known to other processes within that session, much like local variables in a function.
If you want your event object to exist in a global manner and be accessible from other sessions, you should prefix it with "Global\" (e.g. name it "Global\ShutdownSystem"). The system would then create it in the global namespace.