Как отключить вырезание, копирование, вставку, переименование и т. Д. Из реестра Windows? - PullRequest
1 голос
/ 23 января 2012

Я пытаюсь создать программное обеспечение на VB.Net в качестве моего универа, чтобы отключить следующее на ПК с Windows 7. Я думаю, что они должны быть отключены из контекстного меню реестра Windows, но вместо того, чтобы отключить все контекстное меню, я бы хотел отключить следующее по отдельности.

  • Вырезать, копировать, вставлять, переименовывать, удалять, открывать, печатать, делиться, создавать ярлыки, открывать, отправлять, новые, свойства.

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

Моя проблема в том, что я не знаю, какой ключ нужно отключить, поскольку реестр настолько велик, и некоторые ключи имеют одинаковое название.

Может ли кто-нибудь помочь мне сказать, каковы точные ключевые положения вышеупомянутых функций щелчка правой кнопкой мыши в реестре Windows или как это сделать?

1 Ответ

7 голосов
/ 23 января 2012

Глубокая ошибка допущений, сделанных в этом вопросе, заключается в том, что контекстное меню настраивается записями реестра. Это не. Windows позволяет изменять контекстное меню окна, отправляя сообщение WM_CONTEXTMENU. Код, а не конфиг. Если вас не устраивает реализация этого сообщения по умолчанию, тогда вы подкласс оконной процедуры и предоставляете собственный обработчик сообщений для этого сообщения, чтобы вы могли отобразить свое собственное контекстное меню. Это основа работы Windows.

Изменение контекстного меню программы, которую вы не написали, тоже возможно, но гораздо сложнее. Вы используете SetWindowsHookEx (), чтобы внедрить DLL в другой процесс. Вы не можете написать такую ​​DLL в VB.NET, для этого требуется собственный код. Потому что этот процесс не будет загружен CLR для запуска управляемого кода.

...