2010-02-15 6 views
3

Я работаю над приложением, которое должно быть временно положить машину в ограниченное киоск-как состояние. Одной из вещей, которые мне нужно заблокировать, является доступ к подключенным USB-накопителям. Есть ли способ сделать это через C#, , кроме, возиться с политикой групповой политики Windows? (Этот подход покрыт my other SO question on this topic)Как ограничить доступ к USB-накопителям с помощью C#?

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

Update:

Я нацеливание Windows XP для этого. Поддержка Vista была бы приятной, но не обязательной. в идеале я бы только блокировал USB-накопители, подключенные к после. Мое приложение запускается, но допустимо заблокировать доступ к USB-накопителю.

Это приложение будет работать на машинах, которые я не контролирую. В основном мое приложение устанавливается, создавая ограниченную песочницу. Затем пользователь регистрируется в моем приложении, выполняет некоторые действия по времени, а затем выходит из системы. Мое приложение удаляется, восстанавливая ПК до прежнего состояния. Я ищу кодовое решение, которое позволяет мне сделать наименьшее количество предположений о ранее существовавшей среде, вплоть до предположения, что я могу получить доступ к BIOS.

+1

Возможно, это из коробки, но один из самых простых способов - отключить порты USB в BIOS, нет? –

+0

Вы хотите ограничить доступ на машине или просто получить доступ к своему приложению? –

+0

Есть ли возможность удалить или вставить USB-накопители во время этого * временно ограниченного режима или USB-накопители? Какую операционную систему вы используете? – Isaac

ответ

5

Вы можете сделать это, изменив реестр.

using Microsoft.Win32; 
RegistryKey key; 
key = Registry.LocalMachine.OpenSubKey 
     ("SYSTEM\\CurrentControlSet\\Services\\UsbStor"); 
key.SetValue("Start", 4, RegistryValueKind.DWord); //disables usb drives 
key.SetValue("Start", 3, RegistryValueKind.DWord); //enables usb again 

http://support.microsoft.com/kb/823732

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

+0

В соответствии с этой статьей (http://diaryproducts.net/about/operating_systems/windows/disable_usb_sticks) это работает только в том случае, если уже установлен драйвер USB-хранилища. Если диск НЕ установлен, тогда инфраструктура Plug-N-Play будет устанавливать его при первом использовании, и эта установка сбросит этот раздел реестра на «3» [разрешено]. Вы столкнулись с этой проблемой? Есть ли у вас какие-либо идеи по его решению, кроме ограничения доступа к USBSTOR.INF в связанной статье? –

+0

Я бы, наверное, съел одноразовый хит, который он работает во время вашего приложения, если он не является абсолютно критичным. Вы в порядке с чем-то уже подключенным к работе, поэтому я бы принял этот случай как исключение. Либо это, либо распространять ваше приложение на USB-накопителях и палочках и убить случай исключения. – sclarson