C# "Внедрить" диск в проводник Windows
Есть ли способ "вставить" диск в проводник? Чего я хочу добиться: при открытии проводника должен быть диск, который выглядит как обычный раздел жесткого диска или сетевой диск (единственное отличие: без информации о емкости (если возможно) и с другим значком). Это не требует какой-либо логики ввода-вывода, единственное, что мне нужно, это действовать при нажатии. При нажатии на него должно появиться всплывающее окно для вставки пароля, и если пароль правильный, я хочу удалить поддельный диск, подключить сетевой диск и открыть корневой каталог сетевого диска (в основном пользователь даже не замечает, что это был фальшивый диск как выглядит как он разблокировал сетевой диск и он открывается)
С уважением, Скрытый
1 ответ
Для тех, у кого нет плохих намерений и ответить на главный вопрос:
Да, есть способ "закачать" виртуальный диск с помощью Win32 API:
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private static extern bool DefineDosDevice(
int dwFlags,
string lpDeviceName,
string lpTargetPath);
Лучшим вариантом является создание виртуального диска, готового к отображению информации, но только после того, как его корневой каталог будет открыт и будет введен пароль. В Windows это можно сделать, например, с помощью нашего продукта CBFS Connect, в Linux и macOS - с помощью FUSE и "Fuse for macOS" соответственно. То есть, если вы можете раскрыть данные файловой системы с помощью кода.
Если вы хотите смонтировать сетевой диск (через сеть SMB / Windows) вместо виртуального диска, который вы создали, это сложнее - вы можете смонтировать сетевой диск заранее, но использовать драйвер фильтра файловой системы для блокировки доступа к сетевому диску. пока не будет выполнен доступ (например, через проводник) и не будет введен пароль. Это можно сделать с помощью другого нашего продукта, CBFS Filter.
Конкретные реализации обоих подходов довольно сложны, чтобы их можно было проиллюстрировать с помощью простого фрагмента кода.