Код из этого вопроса P / Вызывает ConvertStringSecurityDescriptorToSecurityDescriptorW()
функцию WinAPI для преобразования следующей магической строки
S:(ML;;NW;;;LW)
в объект дескриптора безопасности, который затем используется для установки контроля доступа к именованному каналу. Магическая строка на самом деле является так называемым системным списком управления доступом, также упоминаемым как SACL или системный ACL в MSDN.
Я пытаюсь использовать .NET-класс System.IO.Pipes.PipeSecurity
для достижения того же эффекта без P / Invoke. Похоже, мне нужно создать объект SecurityIdentifier
, но когда я передаю строковое представление ACL, показанное выше, в конструктор SecurityIdentifier
, я получаю ArgumentException
, поэтому похоже, что это неправильная строка SDDL.
Я попытался использовать RawSecurityDescriptor
, который позже смогу преобразовать в форму SDDL и передать результат преобразования в конструктор SecurityIdentifier
. Если я построю RawSecurityDescriptor
из приведенной выше строки, я получу дескриптор с пустым SACL (метод получения SystemAcl возвращает S:
). Однако у RawSecurityDescriptor
есть сеттер для SystemAcl
, так что, возможно, я смогу создать его сам и назначить его полю SystemAcl
.
Я просмотрел довольно много примеров и до сих пор не могу понять, как преобразовать строку, показанную выше, в SystemAcl
. Есть ли какое-нибудь описание того, как эти партии заглавными буквами следует интерпретировать и преобразовывать в SystemAcl
?
NamedPipeServerStream
принимаетPipeSecurity
объект. Было бы неплохо, если бы конвейерный сервер запускался в обычном процессе, чтобы он принимал запросы от процессов с низким уровнем целостности. - person sharptooth   schedule 13.11.2020SetSecurityInfo
илиSetKernelObjectSecurity
- нужно с самого начала создать канал с дескриптором безопасности.ConvertStringSecurityDescriptorToSecurityDescriptor
правильно используется для преобразования строковой формы в двоичную. и чем нужно использовать это внутриSECURITY_ATTRIBUTES
- person RbMm   schedule 13.11.2020