想了解一下诸位的跨进程通讯方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yaott2020
V2EX    程序员

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

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

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

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

    想请教一下诸位的方案,并欢迎提出上述方案的修改建议
    16 条回复    2024-09-27 19:55:32 +08:00
    tool2dx
        1
    tool2dx  
       2024-09-26 20:00:39 +08:00 via Android
    我是直接把临时数据,写在注册表做进程共享的。不需要特殊权限,简单,暴力。
    tool2dx
        2
    tool2dx  
       2024-09-26 20:03:02 +08:00 via Android
    还有就是 WM_COPYDATA ,也不需要权限,挺方便。
    james122333
        3
    james122333  
       2024-09-27 02:09:44 +08:00 via Android
    你这样很难调试 出了问题也难以修正 组件互动也过于单一化
    james122333
        4
    james122333  
       2024-09-27 02:23:32 +08:00 via Android
    当然做别人的东西应该都会差不多这么搞 多人懂 东西不好不坏
    R4rvZ6agNVWr56V0
        5
    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
        6
    yaott2020  
    OP
       2024-09-27 07:33:15 +08:00 via Android
    @james122333 个人项目,而且用过一些现成的库,都不好用,这段代码是参考字节的相关代码写的,应该不会有什么大的问题
    yaott2020
        7
    yaott2020  
    OP
       2024-09-27 07:34:07 +08:00 via Android
    @GeekGao Windows 下用的就是 NamedPipe
    yaott2020
        8
    yaott2020  
    OP
       2024-09-27 07:36:11 +08:00 via Android
    @tool2dx 主要需要读取一些流数据,频繁读写注册表不会有什么性能问题吧
    zhangeric
        9
    zhangeric  
       2024-09-27 08:40:17 +08:00
    windows 可以使用共享内存.
    bthulu
        10
    bthulu  
       2024-09-27 09:39:06 +08:00
    当然是 GRPC 配合 OAUTH 了
    specture
        11
    specture  
       2024-09-27 10:11:03 +08:00
    在端上应该 NamedPipe 和 UDS 是比较好的方案了.
    salmon5
        12
    salmon5  
       2024-09-27 10:35:12 +08:00
    为保证安全性,还在其中包装了 TLS ,双向证书验证,即 NamePipe+TLS / UnixDomainSocket+TLS 。
    ================================================================
    这个感觉没必要。
    codehz
        13
    codehz  
       2024-09-27 11:24:03 +08:00
    不是你进程内用 TLS 是脱裤子放屁吗,威胁模型先确定一下啊,桌面系统可能存在的问题是病毒劫持了你的程序伪造发送消息,你这个用 TLS 有啥意义,只要病毒能注入代码到低权限进程,就可以轻易伪造,有没有 TLS 都没区别。。。
    同一个机器上的话应该由特权进程来验证通讯的进程是否合法...windows 使用 com 的远程调用机制是可以做到的,可以参考 Chrome 最近在 windows 上使用的一个叫做“App-Bound”的机制(保护 cookie 不被其他进程解密的)
    yaott2020
        14
    yaott2020  
    OP
       2024-09-27 19:48:40 +08:00 via Android
    @salmon5 服务可以以管理员执行任意命令,需要鉴权和保证安全性
    yaott2020
        15
    yaott2020  
    OP
       2024-09-27 19:49:26 +08:00 via Android
    @codehz 是两个进程
    yaott2020
        16
    yaott2020  
    OP
       2024-09-27 19:55:32 +08:00 via Android
    @codehz 感谢分享,我再了解
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2333 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 01:36 PVG 09:36 LAX 17:36 JFK 20:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86