7

是否有用于更改 COM 安全性的访问权限的 api?我需要将新值写入“编辑限制...”和“编辑默认值...”。这些是普通的注册表设置吗?找不到如何设置这些条目。

4

1 回答 1

6

快速回答是,它们是注册表设置,长答案是不,它们不是简单的注册表设置。这些值是二进制的并指向 ACL 结构。为了更改这些,您需要加载、更新和保存 ACL(这需要相当多的代码)。Windows SDK 中的DCOMPerm 示例是一个不错的起点,我已将它用作我在工作中用来处理此问题的一组类的基础(不幸的是,我无法将该代码发布到公共领域)

您可以查看 DCOM 密钥结构的MSDN 文档- 涵盖计算机范围的设置。COM 应用程序的特定设置存储在注册表中其 APPID 下的 AccessPermission 和 LaunchPermission 值中。

请记住,如果操作不当,修改机器范围设置的 ACL 会很快导致机器无法使用。如果我没记错的话,您可以简单地删除这些值(通过 RegEdit),操作系统将恢复默认设置以使您的机器恢复正常……但我不再 100% 确定这一点。

编辑:二进制数据实际上是一个安全描述符,但最终它包含需要处理的 ACL - SD 只是在解包/打包时添加了一层代码。

于 2010-01-15T14:47:18.053 回答