This topic created in 592 days ago, the information mentioned may be changed or developed.
自己写一个项目,某些情境下需要管理员权限执行命令,频繁弹出 UAC 很影响用户体验。所以将这部分功能分离,做成服务,主程序与其进行通信。由于项目特殊性,主程序与服务通讯时尽可能绕过网络栈。因为之前没有遇到需要跨进程通讯的情景,自己 Google 并找到以下解决方案:
- 在 Windows 下采用 NamePipe
- 在 Unix 下采用 UnixDomainSocket
为保证安全性,还在其中包装了 TLS ,双向证书验证,即 NamePipe+TLS / UnixDomainSocket+TLS 。
想请教一下诸位的方案,并欢迎提出上述方案的修改建议
16 replies 2024-09-27 19:55:32 +08:00  | | 1 tool2dx div class="badges"> Sep 26, 2024 via Android 我是直接把临时数据,写在注册表做进程共享的。不需要特殊权限,简单,暴力。 |
 | | 2 tool2dx Sep 26, 2024 via Android 还有就是 WM_COPYDATA ,也不需要权限,挺方便。 |
 | | 3 james122333 Sep 27, 2024 via Android 你这样很难调试 出了问题也难以修正 组件互动也过于单一化 |
 | | 4 james122333 Sep 27, 2024 via Android 当然做别人的东西应该都会差不多这么搞 多人懂 东西不好不坏 |
 | | 10 bthulu Sep 27, 2024 当然是 GRPC 配合 OAUTH 了 |
 | | 11 specture Sep 27, 2024 在端上应该 NamedPipe 和 UDS 是比较好的方案了. |
 | | 12 salmon5 Sep 27, 2024 为保证安全性,还在其中包装了 TLS ,双向证书验证,即 NamePipe+TLS / UnixDomainSocket+TLS 。 ================================================================ 这个感觉没必要。 |
 | | 13 codehz Sep 27, 2024 不是你进程内用 TLS 是脱裤子放屁吗,威胁模型先确定一下啊,桌面系统可能存在的问题是病毒劫持了你的程序伪造发送消息,你这个用 TLS 有啥意义,只要病毒能注入代码到低权限进程,就可以轻易伪造,有没有 TLS 都没区别。。。 同一个机器上的话应该由特权进程来验证通讯的进程是否合法...windows 使用 com 的远程调用机制是可以做到的,可以参考 Chrome 最近在 windows 上使用的一个叫做“App-Bound”的机制(保护 cookie 不被其他进程解密的) |