多个远程连接实例的情况下,能否找回由其他连接建立的进程窗口

keenleung 2008-02-21 04:45:02
现在的windows server都支持多个连接实例,都使用相同windows帐号登陆。有一些应用,是要求在server上保持唯一实例的,即在多个连接实例间共用。
在一个连接里创建了进程后,在其他连接实例里,可以在进程列表里看到,但是互斥量无法工作,也无法找到窗口,所以能够“顺利”地启动进程。。。
互斥的问题是可以通过枚举进程搞掂,但是要找回主窗口就不知如何下手了,各位看看?
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
keenleung 2008-02-22
  • 打赏
  • 举报
回复
感谢两位的回复,跟我想的有些一致。唯一实例只能在唯一session上做,system用户应该能保证唯一性,那么在这个用户下创建的进程也就可保证唯一实例了。
把进程做成windows service,增加与桌面交互的处理,可弹出窗口。然后每个使用帐号下的就写成代理进程,与服务进程通信后模拟出踢人的情景,这个方法应该可行。
jameshooo 2008-02-21
  • 打赏
  • 举报
回复
创建全局命名互斥量,用名称“Global:...”。
找主窗口就别想了,跨session是无法访问窗口的,除非自动在新产生的session中复制一个进程,但是又不符合一个进程实例的要求。如果想通信,使用全局命名管道。
阿呆_ 2008-02-21
  • 打赏
  • 举报
回复
你说的是windows中的session吧? 一个登录账号对应一个session. 要跨session访问需要通过windows service实现, 尤其是GUI资源, 需要以另一个账号的权限创建一个进程才能与该session中的进程进行通讯。
比如你的session 1中要访问session 2的某个进程, 需要通过service在session 2中创建一个进程, 获取你需要的数据后再通过某种方式由service中转给session 1中的进程。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧