У меня есть необходимость настроить запуск DCOM и права доступа для конкретного приложения. Основываясь на другом найденном мной сценарии, кажется, что необработанный дескриптор безопасности хранится в значениях реестра AccessPermission и LaunchPermission в ключе HKEY_CLASSES_ROOT \ AppID \ [My-Application-ID].
Вместо того, чтобы писать собственные методы для получения и установки разрешений, возможно ли использовать методы в классе Chef :: Win32 :: Security? Есть ли способ передать необработанные данные дескриптора безопасности из раздела реестра в один из этих методов, чтобы получить ACE в DACL?
Я пробовал что-то похожее ниже, но я получаю сообщение об ошибке Win32 о том, что версия дескриптора безопасности неизвестна.
def dcom_access_permissions
reg_key = 'AppID\\{12345678-1234-1234-1234-1234567890AB}'
permissions = ::Win32::Registry::HKEY_CLASSES_ROOT.open(reg_key) do |reg|
type, value = reg.read('AccessPermission')
return value
end
permissions
end
def dcom_security_descriptor
raw_sd = dcom_access_permissions
raw_sd_ptr = ::FFI::MemoryPointer.new raw_sd
Chef::Win32::Security::SecurityDescriptor.new(raw_sd_ptr)
end
sd = dcom_security_descriptor
sd.dacl
Это приводит к следующей ошибке:
---- Begin Win32 API output ----
System Error Code: 1305
System Error Message: The revision level is unknown.
---- End Win32 API output ----