【问题标题】:Can I pass a SC_HANDLE between processes?我可以在进程之间传递 SC_HANDLE 吗?
【发布时间】:2016-08-26 04:56:40
【问题描述】:

Windows API 包含一个名为DuplicateHandle 的有用函数,可用于将 HANDLE(到文件、注册表项、进程、互斥体等)从一个进程传输到另一个进程。这对很多事情都很有用,包括在编写沙箱时,有时代理进程会打开一个 HANDLE(沙箱进程无法访问),然后将该 HANDLE 传递给沙箱。这类似于通过 Unix 域套接字在 POSIX 进程之间传递文件描述符。

不幸的是,DuplicateHandle 的文档没有将服务句柄(SC_HANDLE 类型,由 OpenSCManager 等 API 使用/返回)作为受支持的 HANDLE 类型。有没有办法在进程之间复制(或以其他方式转移)那些?

【问题讨论】:

    标签: winapi windows-services handle


    【解决方案1】:

    这些句柄不能重复。另一个进程需要调用OpenSCManager

    【讨论】:

    • 该死的。谢谢你。如果有人想出一个聪明/晦涩的方法,我将把它打开一会儿,但如果在那段时间没有任何问题,我会将其标记为已回答。我想我可以在 SCM(和相关服务)上设置 ACL,以便沙箱可以打开它(不让任何其他不受信任的进程打开它……嗯,我讨厌直接向沙箱打开东西),但我可能坚持我的第一个计划(让经纪人做所有的电话,以响应沙盒中的 IPC)。不过,这意味着更多的 IPC 代码和性能命中。该死的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多