Есть ли в Windows эквивалент для DiskArbitration в Mac OS? - PullRequest
1 голос
/ 02 ноября 2011

Я собираюсь написать инструмент, который монтирует некоторые внешние диски только для чтения, когда они подключены к машине. На MacOS это было довольно тривиально с платформой Disk Arbitration. Он отправляет уведомления из ОС, когда к машине подключен новый диск, и позволяет вам наложить вето, принять или изменить параметры монтирования (например, принудительное монтирование только для чтения и т. Д.). Есть ли аналог в Windows

Заранее спасибо.

1 Ответ

1 голос
/ 02 ноября 2011

Прямого эквивалента нет.Из соображений безопасности Windows не предоставляет коду пользовательского режима такой большой контроль (например, если вирус решит остановить монтирование любого диска, который, как подозрительно, может содержать антивирусная программа).

The *Сообщение 1003 *WM_DEVICECHANGE уведомляет приложения пользовательского режима о том, как они происходят, но оно довольно ограничено - в частности, хотя вы можете наложить вето на удаление устройства, вам не разрешено много(любой?) контроль над добавлением устройства.

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

По крайней мере, насколько мне известно, .NET не поддерживает RegisterDeviceNotification напрямую, поэтому, если вы хотите использовать его из C #, вам, вероятно, придется сделать это через P / Invoke..

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

...