【发布时间】:2020-03-02 16:44:29
【问题描述】:
我有两个进程通过命名管道进行通信。
其中一个(我们称之为进程A)通过传递一堆参数来使用CreateProcessW 函数。我正在尝试将这些参数发送到进程 B。
如何使用命名管道将 LPSECURITY_ATTRIBUTES 类型的对象从 A 发送到 B?它是一个指向结构的指针,而该结构又具有指向另一个结构的指针。
我该怎么做,我是把每个对象都写到管道上,还是尝试使用像 Boost 这样的库来序列化结构?还是有另一种方法来处理这种结构?
【问题讨论】:
-
你可以看看 (ConvertSecurityDescriptorToStringSecurityDescriptor)[docs.microsoft.com/en-gb/windows/win32/api/sddl/…
-
安全属性基本上是安全描述符。您必须自己完成工作(不要使用自动序列化)docs.microsoft.com/en-us/windows/win32/secauthz/…
-
请注意 SECURITY_ATTRIBUTES 对象在另一个进程中无效,即使您将其内容编组到另一个进程。
-
你可以使用
GetSecurityInfo+SetSecurityInfo获取进程A的SECURITY_INFORMATION,然后设置B(你需要SE_SECURITY_NAME权限来设置SACL)。
标签: c++ winapi serialization