мне тоже видится это как прозрачное\полупрозрачное окно перекрывающее окно программы с уведомлением о необходимости введения пароля
Да, это первое что приходит в голову. Но это самое сложное технически. Даже в полупрозрачном окне контролы принимают фокус со всеми вытекающими последствиями. Т.е. это превращается в следующее предложение:
либо просто дезактивация всех кнопок кроме кнопки разблокировать.
Это я не понимаю пока как можно реализовать. Ну не добавлять же к каждому контролу во всей программе код контроля блокировки. Это полная чушь.
Есть попроще вариант: показывать модальный диалог, который нельзя закрыть пока не введешь пароль, и который блокирует взаимодействие с программой.
Но не стоит забывать, что кроме основного окна программы еще могут быть плавающие окна, которые тоже надо блокировать. А также программа сама может выводить диалоги, например о перезагрузке. Надо отрабатывать перезагрузку программы.
Это все к тому что задача абсолютно непростая даже в минимальном варианте. По существу тут нет минимального варианта. или защита есть или ее нет.
Приделать какую-то затычку, частный случай, это будет как открыть ящик пандоры: посыпятся возмущенные отклики, что это за защита, вот так ее легко обойти, и эдак тоже.
И что, объяснять что мы это не всерьез, только затычку сделали по просьбе, чтобы отвязались?