Скажем, если у меня есть DACL
для процесса, который мне нужно показать конечному пользователю. Я могу преобразовать его в строковое представление с помощью ConvertSecurityDescriptorToStringSecurityDescriptor
. Затем мне нужно сделать его немного более управляемым для пользователя, удалив из него «сумасшедшие» локальные SID. Вот пример:
D:(A;;0x1fffff;;;S-1-5-21-2301966995-2804055512-1978750589-1002)(A;;0x1fffff;;;SY)(A;;0x121411;;;S-1-5-5-0-1207601)(A;;0x1fffff;;;S-1-15-2-155514346-2573954481-755741238-1654018636-1233331829-3075935687-2861478708)
Например, результирующая строка может включать SID пользователя (или S-1-5-21-2301966995-2804055512-1978750589-1002
в приведенном выше случае), который я могу преобразовать в имя пользователя с помощью LookupAccountName
, но я не могу найти способ конвертировать SID AppContainer в имя AppContainer.
В этом случае S-1-15-2-155514346-2573954481-755741238-1654018636-1233331829-3075935687-2861478708
означает Microsoft.Windows.ShellExperienceHost
.
Существует API, который может преобразовать последнее в первое, которое называется DeriveAppContainerSidFromAppContainerName
.
Но мне любопытно, как мне преобразовать AppContainerSid
в AppContainerName
?