C# 处理多个程序集时,请求主体权限失败
我将一个简单的应用程序拆分为三个程序集。一种是客户端表单,允许用户从注册表读取密钥。第二个是用户登录时使用的授权表单。第三个是一个.dll库,其中包含所有实际工作的方法 我遵循了MSDN教程,在这里找到了执行声明性安全检查的方法,但有些方法仍然不起作用 我创建的GenericPrincipal对象如下:C# 处理多个程序集时,请求主体权限失败,c#,.net,security,principal,C#,.net,Security,Principal,我将一个简单的应用程序拆分为三个程序集。一种是客户端表单,允许用户从注册表读取密钥。第二个是用户登录时使用的授权表单。第三个是一个.dll库,其中包含所有实际工作的方法 我遵循了MSDN教程,在这里找到了执行声明性安全检查的方法,但有些方法仍然不起作用 我创建的GenericPrincipal对象如下: public static void CreatePrincipal(string user) { GenericIdentity MyIdentity = ne
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程序集中的CustomPrincipal类中
在同一程序集中,我有一个RegistryOperations类,其方法如下:
[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
?(如果您不打算在权限验证中检查匹配的用户名,则应将其从需求中删除。)我确实打算检查匹配的用户名以进行测试。我是用“admin1”用户名登录的,所以不是这样:(在这种情况下,我无法重新编程。您是否尝试过在执行Thread.CurrentPrincipal时向BTNReAddressry\u Click方法添加代码以验证其内容?是的,我已使用调试器对其进行了检查。内容就在那里。