我正在Windows Server 2003上使用AzMan
,并且编写了一个管理应用程序,该应用程序对安全团队完全隐藏了AzMan
和MMC
。但是,我很难实现MMC
中的功能之一。
我有一个叫User
的角色,一个叫Branch User
的角色,其中除了User
角色外什么都不包含。我想在所有数据(User
)级别分配Role Assignments
角色,并在范围级别分配Branch User
角色。但是,我找不到在不丢失其定义的情况下以编程方式将Branch User
角色分配给作用域的方法。我可以分配角色(通过在示波器上调用CreateRole
),但它似乎只是创建一个新的空白角色。当我在MMC
中右键单击它时,单击属性,然后[Show Definition,它没有任何内容。
[此外,如果我尝试在该AddTask
对象上调用IAzRole
以向其添加User
,则它并没有按预期运行。它将User
角色中的所有任务添加到我的Branch User
角色中,但不添加角色本身。
有没有办法做到这一点?
是的,在WIN2k3上,这是正确的方法。不幸的是,在AzMan版本Vista / Win2k8之前]中,角色定义是Task
,task.IsRoleDefinition
设置为1
。在较新的版本中,它具有自己的命名很好的类。
基本上CreateRole()
正在创建Role Assignment
,而不是Role Definition
(这不一定需要具有名称Branch User
,它可以是任何东西)。角色分配包含角色/任务/操作与成员/用户的定义之间的链接。
然后您将使用Branch User
将角色Role Assignment
添加到app.AddTask()
。
仅对特定的Scope
执行此操作,您需要调用返回一个app.OpenScope
对象的app.CreateScope
(或IAzScope
,如果是新的话)。然后,您可以在scope.CreateTask
或scope.CreateRole
上执行上述所有操作。