ruby - 使用 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 ----
解决方案
推荐阅读
- uml - 这两个类有什么关系?
- mongodb - 如何在mongodb中将字符串转换为日期?
- purescript - purescript 中的模式匹配
- python - 如何根据游戏重播视频检测 FPS 游戏中的相机移动?
- c++ - 为什么第一行会出现除零以外的其他值?
- nuxt.js - 使用 Koa 作为 Nuxt 服务器中间件
- node.js - 无法连接到 MongoDb (MongoNetworkError: connect ETIMEDOUT)
- vb.net - 禁用的标签不会变灰
- python - Python - Outlook 仅在特定范围内搜索电子邮件
- javascript - TypeError : ...map 不是函数 - react.js