Perić Željko Ответов: 2

Как использовать небезопасные собственные методы с разрешениями пользовательского интерфейса


Привет,
У меня есть простая дилемма о том, что такое синтаксис и семантика propper при использовании небезопасных нативных методов с разрешениями пользовательского интерфейса. Вот пример программного кода с объяснением в официальных документах MS Visual Studio:

Ссылка на статью

Если я правильно понял синтаксис таков :

создать новое разрешение пользовательского интерфейса
вызов небезопасного метода


Чего я только не понимал ,
Нужно ли мне повторно создавать новое разрешение безопасности пользовательского интерфейса каждый раз, когда я вызываю небезопасный метод ?
Если мне нужно последовательно вызывать множество различных небезопасных методов , нужно ли создавать новые разрешения безопасности пользовательского интерфейса для каждого из них?

Что я уже пробовал:

Прочитав много незнакомого материала в интернете на эту тему, я создал программу, которая работает правильно, debbuger не показывает никаких ошибок или предупреждений, но я до сих пор не знаю, правильно ли она написана. Вот вам и мир кода :

void Register_Clipboard_Listener_And_HotKeys()
{
    // Reset Registration message
    Registration_Message = string.Empty;

    // Demand new security permission
    new UIPermission(UIPermissionWindow.AllWindows, UIPermissionClipboard.AllClipboard).Demand();

    // Set Clipboard listener
    Clipboard_Listener = UnsafeNativeMethods.AddClipboardFormatListener(this.Handle);

    if (Clipboard_Listener == false)
    {
        Registration_Message += "   Clipboard listener could not be registered.  \n\n";
        Registration_Ok = false;
        return;
    }

    // Demand new security permission
    new UIPermission(UIPermissionWindow.AllWindows).Demand();

    // Hot Key Combination to Control + V
    Ctrl_V = UnsafeNativeMethods.RegisterHotKey(this.Handle, V, Control | MOD_NOREPEAT, V);
    if (Ctrl_V == false)
    {
        Registration_Message += "   Hot Key - Ctrl + V - could not be registered.  \n\n";
        Registration_Ok = false;
        return;
    }

    // Demand new security permission
    new UIPermission(UIPermissionWindow.AllWindows).Demand();

    // Hot Key Combination to Control + V
    Ctrl_Alt_V = UnsafeNativeMethods.RegisterHotKey(this.Handle, W, Control | Alt | MOD_NOREPEAT, V);
    if (Ctrl_Alt_V == false)
    {
        Registration_Message += "   Hot Key - Ctrl + Alt + V - could not be registered.  \n\n";
        Registration_Ok = false;
        return;
    }


Правильно ли написана эта часть кода?
Есть ли что - нибудь, что необходимо сделать до закрытия главного окна?

Заранее спасибо.

Всего наилучшего,
Желько Перич

2 Ответов

Рейтинг:
11

Perić Željko

После долгих поисков в Интернете я нашел эту статью :

Безопасность доступа к коду в .NET | DotNet Information[^]

Это ясно дает ответ на вышеупомянутый вопрос.

Всего наилучшего,
Желько Перич


Рейтинг:
1

RickZeeland

Возможно, вы сможете найти более подробную информацию по этому вопросу в главе 21.безопасность книги "C# 6 в двух словах".

А вот статья CodeProject: КАС (безопасность доступа к коду) &усилителя; .Сетевая модель безопасности 4.0 часто задаваемые вопросы (с демонстрацией видео )[^]


Perić Željko

Это слишком дорогое решение.

RickZeeland

К счастью мой босс оплачивает счет :)
Есть статьи на CodeProject о CAS тоже, просто нужно было использовать правильный поисковый запрос ...

Perić Željko

Когда я печатал "слишком дорого",
Я имел в виду, что в то время мне нужно было получить ответ.
Во всяком случае, танки.