Получите и установите разрешения DCOM, используя Chef - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть необходимость настроить запуск 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 ----
...