首页 > 解决方案 > 使用 Chef 获取和设置 DCOM 权限

问题描述

我需要为特定应用程序配置 DCOM 启动和访问权限。根据我发现的另一个脚本,原始安全描述符似乎存储在注册表值 AccessPermission 和 LaunchPermission 中的键 HKEY_CLASSES_ROOT\AppID\[My-Application-ID] 中。

不必编写自己的方法来获取和设置权限,是否可以使用 Chef::Win32::Security 类中的方法?有没有一种方法可以将原始安全描述符数据从注册表项传递到这些方法之一以获取 DACL 中的 ACE?

我在下面尝试了类似的操作,但我不断收到 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 ----

标签: rubywindowschef-infradevopsdcom

解决方案


推荐阅读