使用多个程序集时,请求主体权限失败

本文关键字:请求 主体 权限 失败 程序集 | 更新日期: 2023-09-27 17:56:13

我有一个简单的应用程序,分为三个程序集。一种是客户端表单,允许用户从注册表中读取密钥。其次是用户登录的授权表单。第三个是.dll库,所有方法都在做实际工作。

我按照此处找到的有关执行声明性安全检查的 MSDN 教程进行操作 http://msdn.microsoft.com/en-us/library/dswfd229.aspx 但仍然不起作用。

我像这样创建 GenericPrincipal 对象:

    public static void CreatePrincipal(string user)
    {
        GenericIdentity MyIdentity = new GenericIdentity(user);
        String[] MyString = { "Administrator", "User" };
        GenericPrincipal MyPrincipal =
            new GenericPrincipal(MyIdentity, MyString);
        Thread.CurrentPrincipal = MyPrincipal;
    }

它位于.dll程序集的自定义主体类中。

在同一程序集中,我有一个具有以下方法的注册表操作类:

    [PrincipalPermissionAttribute(SecurityAction.Demand, Name = "admin1", Role = "User")]
    public static string ReadDeclarative()
    {
      ...
    }

没什么好看的。在我的"授权"程序集中,我有一个 GUI .dll它调用授权方法:

    private void btnLogin_Click(object sender, EventArgs e)
    {
        CustomPrincipal.CreatePrincipal(txtUsername.Text);
    }

最后,在第三个"客户端"程序集中,我调用.dll方法来读取注册表项:

    private void btnReadRegistry_Click(object sender, EventArgs e)
    {
        txtContents.Text = RegistryOperations.ReadDeclarative();
    }

这行不通。我通过授权程序集登录,当我尝试读取注册表时,我收到主体权限请求失败。Visual Studio建议将程序集添加到一些神秘的完全信任列表中,但这在VS2010中找不到。请指教。

使用多个程序集时,请求主体权限失败

登录时,是否使用用户名admin1? (如果您不打算在权限验证中检查匹配的用户名,则应将其从需求中删除。