想了解一下诸位的跨进程通讯方案

2024-09-26 19:58:06 +08:00
 yaott2020
自己写一个项目,某些情境下需要管理员权限执行命令,频繁弹出 UAC 很影响用户体验。所以将这部分功能分离,做成服务,主程序与其进行通信。由于项目特殊性,主程序与服务通讯时尽可能绕过网络栈。因为之前没有遇到需要跨进程通讯的情景,自己 Google 并找到以下解决方案:

- 在 Windows 下采用 NamePipe
- 在 Unix 下采用 UnixDomainSocket

为保证安全性,还在其中包装了 TLS ,双向证书验证,即 NamePipe+TLS / UnixDomainSocket+TLS 。

想请教一下诸位的方案,并欢迎提出上述方案的修改建议
2311 次点击
所在节点    程序员
16 条回复
tool2dx
2024-09-26 20:00:39 +08:00
我是直接把临时数据,写在注册表做进程共享的。不需要特殊权限,简单,暴力。
tool2dx
2024-09-26 20:03:02 +08:00
还有就是 WM_COPYDATA ,也不需要权限,挺方便。
james122333
2024-09-27 02:09:44 +08:00
你这样很难调试 出了问题也难以修正 组件互动也过于单一化
james122333
2024-09-27 02:23:32 +08:00
当然做别人的东西应该都会差不多这么搞 多人懂 东西不好不坏
R4rvZ6agNVWr56V0
2024-09-27 04:05:17 +08:00
命名管道最简单, 安全方案都是 ms 标准的东西 https://learn.microsoft.com/en-us/windows/win32/ipc/named-pipe-security-and-access-rights
yaott2020
2024-09-27 07:33:15 +08:00
@james122333 个人项目,而且用过一些现成的库,都不好用,这段代码是参考字节的相关代码写的,应该不会有什么大的问题
yaott2020
2024-09-27 07:34:07 +08:00
@GeekGao Windows 下用的就是 NamedPipe
yaott2020
2024-09-27 07:36:11 +08:00
@tool2dx 主要需要读取一些流数据,频繁读写注册表不会有什么性能问题吧
zhangeric
2024-09-27 08:40:17 +08:00
windows 可以使用共享内存.
bthulu
2024-09-27 09:39:06 +08:00
当然是 GRPC 配合 OAUTH 了
specture
2024-09-27 10:11:03 +08:00
在端上应该 NamedPipe 和 UDS 是比较好的方案了.
salmon5
2024-09-27 10:35:12 +08:00
为保证安全性,还在其中包装了 TLS ,双向证书验证,即 NamePipe+TLS / UnixDomainSocket+TLS 。
================================================================
这个感觉没必要。
codehz
2024-09-27 11:24:03 +08:00
不是你进程内用 TLS 是脱裤子放屁吗,威胁模型先确定一下啊,桌面系统可能存在的问题是病毒劫持了你的程序伪造发送消息,你这个用 TLS 有啥意义,只要病毒能注入代码到低权限进程,就可以轻易伪造,有没有 TLS 都没区别。。。
同一个机器上的话应该由特权进程来验证通讯的进程是否合法...windows 使用 com 的远程调用机制是可以做到的,可以参考 Chrome 最近在 windows 上使用的一个叫做“App-Bound”的机制(保护 cookie 不被其他进程解密的)
yaott2020
2024-09-27 19:48:40 +08:00
@salmon5 服务可以以管理员执行任意命令,需要鉴权和保证安全性
yaott2020
2024-09-27 19:49:26 +08:00
@codehz 是两个进程
yaott2020
2024-09-27 19:55:32 +08:00
@codehz 感谢分享,我再了解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1076095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX