windows - 一个进程可以向另一个进程在不同用户名下创建的事件发出信号(两个进程在不同用户名下运行)吗?

标签 windows events windows-7 event-log createprocess

发生在 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/

相关文章:

c# - 如何以编程方式在 Windows 7 中打开/关闭密码保护共享?

c++ - 检查窗口是否在屏幕上可见的功能在 Windows 7 上不起作用

events - 优化在焦点上更新 ng-model 和 ng-style 的 AngularJS 指令

java - 最新版本的eclipse是否完全兼容windows 10?

窗口命令 : How to create symbolic link to executable file?

sql-server - 无法在 Windows 7 x64 中登录 SQL Server 2008

JavaFX:如何监听非 UI 对象上的事件

c# - 为什么文本框点击事件不触发

c# - schtasks 表示状态为 "could not start"

ruby - 是否有任何用于 Windows 和 Unix 的远程脚本编写的框架?