Как отключить кнопки обновления / удаления на всех формах, если пользователь не входит в группу администраторов? - PullRequest
0 голосов
/ 03 марта 2020

Я хочу отключить все кнопки на моих формах в приложении windows, если пользователь не входит в группу администраторов. Я уже создал базу данных, содержащую таблицу с информацией о пользователе, имеющую следующие поля имя пользователя, пароль и группу пользователей.

1 Ответ

0 голосов
/ 03 марта 2020

Было бы лучше создать разных пользователей базы данных, которые могут / не могут выполнять эти операции в БД, потому что довольно легко повторно включить кнопку с помощью программы типа шпион в окне. Вот ссылка на проект codeproject , где истинный автор создает простое приложение для повторного включения отключенных элементов управления (для защиты от гниения ссылок суть в том, чтобы найти дескриптор элемента управления и вызвать EnableWindow, отправить его WM_ENABLE и установить его стиль WM_DISABLED в false). См. Также эту статью: 6 программ для принудительного включения отключенных элементов управления

Главное, на что я здесь указал, это то, что эти программы не имеют ничего общего с вашим приложением. Если я пользователь с хакерскими наклонностями и обнаружу, что единственный способ защитить ваших пользователей низкого уровня от создания обновлений БД - это отключить кнопку обновления, я просто воспользуюсь приложением, чтобы снова включить вашу кнопку и щелкнуть ее в любом случае. Этот уровень важности безопасности должен управляться в другом месте

Если вы хотите иметь только двух пользователей БД и затем свернуть свою таблицу пользователей, вы должны запустить свое приложение, используя пользователя БД только для чтения в строке подключения, и выполнить вход и, если пользователь является администратором, измените строку подключения, чтобы использовать пользователя БД, который может обновлять

. Чтобы было ясно, когда я говорю «пользователь БД», я имею в виду пользователя / логин для сервера sql, например sa, я не имею в виду «запись в таблице пользователей, которая представляет человека, использующего вашу пограмму». Один логин будет иметь привилегию db_datareader, другой - db_owner et c (SQL номенклатура сервера)

Если вы все еще не можете изменить кнопки, см. Здесь методы, которые могут перечислять все кнопки в форме: Как получить ВСЕ дочерние элементы управления формы Windows формы определенного типа c (Кнопка / Текстовое поле)?

Будьте последовательны в отношении имен ваших кнопок, и вы сможете определить, является ли это кнопка обновления, например, имя, содержащее «обновление»

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