В качестве комментария вы можете передать формат строки дескриптора безопасности другому процессу, используя ConvertSecurityDescriptorToStringSecurityDescriptor
в процессе A, и преобразовать обратно с ConvertStringSecurityDescriptorToSecurityDescriptor
в процессе B:
LPWSTR StringSecurityDescriptor = NULL;
ULONG Len = 0;
SECURITY_INFORMATION flag; //set flag = whatever your want to convert into string format and send to process B
ConvertSecurityDescriptorToStringSecurityDescriptorW(ppSecurityDescriptor, SDDL_REVISION_1, flag,&StringSecurityDescriptor, &Len);
WriteFile(hPipe, StringSecurityDescriptor, Len*sizeof(WCHAR), &dwritten, NULL);
LocalFree(StringSecurityDescriptor);
И если дескриптор безопасности имеет значение Self-Relative :
, дескриптор безопасности сохраняет структуру SECURITY_DESCRIPTOR
и связанную информацию о безопасности в непрерывном блоке memory.
дескриптор безопасности всегда начинается со структуры SECURITY_DESCRIPTOR
, но другие компоненты дескриптора безопасности могут следовать структуре в любом порядке. Вместо использования адресов памяти компоненты дескриптора безопасности идентифицируются смещениями от начала дескриптора. Этот формат полезен, когда дескриптор безопасности должен храниться на диске, передаваться по протоколу связи или копироваться в памяти.
Или использовать MakeSelfRelativeSD
для создания дескриптор безопасности в относительном формате из абсолютного формата в качестве шаблона.
Кроме того, вы также можете использовать SetSecurityInfo
для установки информации о безопасности другого процесса.