Не удалось запросить основное разрешение при работе с несколькими сборками - PullRequest
1 голос
/ 10 мая 2011

У меня есть простое приложение, разбитое на три сборки.Одним из них является клиентская форма, которая позволяет пользователю читать ключ из реестра.Второй - это форма авторизации, через которую пользователь входит в систему. Третий - библиотека .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;
    }

Он находится в классе CustomPrincipal в сборке .dll.

Вв той же сборке у меня есть класс RegistryOperations со следующим методом:

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

Ничего особенного.В моей сборке «Авторизация» у меня есть графический интерфейс, который вызывает метод .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.Пожалуйста, сообщите.

1 Ответ

0 голосов
/ 10 мая 2011

Когда вы входите в систему, используете ли вы имя пользователя admin1? (Если вы не намеревались проверять соответствие имени пользователя при проверке полномочий, вам следует удалить его из запроса.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...