【发布时间】:2011-01-01 05:11:46
【问题描述】:
是否有 api 可以更改 COM 安全性的访问权限?我需要将新值写入“编辑限制...”和“编辑默认值...”。这些是普通的注册表设置吗?找不到如何设置这些条目。
【问题讨论】:
是否有 api 可以更改 COM 安全性的访问权限?我需要将新值写入“编辑限制...”和“编辑默认值...”。这些是普通的注册表设置吗?找不到如何设置这些条目。
【问题讨论】:
快速回答是,它们是注册表设置,长答案是不,它们不是简单注册表设置。这些值是二进制的并指向 ACL 结构。为了更改这些,您需要加载、更新和保存 ACL(这需要大量代码)。 Windows SDK 中的DCOMPerm sample 是一个不错的起点,我已将它用作我在工作中用来处理此问题的一组类的基础(不幸的是,我无法将该代码发布到公共领域)
您可以查看 MSDN Documentation 以了解 DCOM 密钥结构 - 涵盖计算机范围的设置。 COM 应用程序特定设置存储在注册表中其 APPID 下的 AccessPermission 和 LaunchPermission 值中。
请记住,如果操作不当,修改机器范围设置的 ACL 会很快导致机器无法使用。如果我没记错的话,您可以简单地删除这些值(通过 RegEdit),操作系统将恢复默认值以使您的机器恢复正常……但我不再 100% 确定这一点。
编辑:二进制数据实际上是一个安全描述符,但最终它包含需要处理的 ACL - SD 只是在解包/打包时添加了一层代码。
【讨论】: