2015-12-23 3 views
-3

Я разработал приложение для входа в Windows, написанное на C#, идея заключалась в том, что при правильном клике любого файла в окнах в меню правой кнопки мыши должен отображаться элемент приложения для входа в систему, щелкнув этот пункт меню , он должен заблокировать этот файл. Когда мы пытаемся открыть этот файл, он должен показать этот экран входа в систему, чтобы открыть файл. Помогите мне найти самый простой способ сделать это. snapshot of login screen is hereПриложение для входа в Windows

ответ

1

Вам нужны три вещи: пункт меню

  1. контекст, в проводнике. Это можно легко сделать в C#, используя, например, SharpShell.

  2. Ввод в контекстное меню начинается с программы (возможно, окна формируют, не отображая формы, чтобы сделать ее невидимой), которая будет писать где-нибудь подсказку (полный путь файла), чтобы этот файл был заблокирован.

  3. A File System Filter, который считывает эти подсказки и блокирует доступ к файлу, пока он не разблокирован.

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

Итак, сначала подумайте о концепции, как и где хранить информацию о том, какие файлы были заблокированы. Как приложение Windows может добавлять и удалять записи? Как модуль низкого уровня может читать информацию оттуда? Подумайте о состоянии гонки, потому что оба они работают асинхронно. Если у вас есть прочная концепция, и фильтр работает безупречно, остальное почти ничего.

+0

Возможно, внедорожник. О файловом системном фильтре не совсем корректно: по крайней мере, существует драйвер ядра pre-build FUSE для Windows с рабочим связыванием C# для библиотеки. Я пробовал это 2 часа назад, был не очень стабильным (я говорю даже не о привязке .NET о самом драйвере, получил количество BSOD), но прошло много времени, так как я попробовал это – vitalygolub

Смежные вопросы