如何使用C#限制对USB驱动器的访问?

Set*_*son 3 .net c#

我正在开发一个应用程序,需要暂时将机器置于受限制的,类似于kiosk的状态.我需要阻止的一件事是访问连接的USB驱动器.除了搞乱Windows组策略之外,有没有办法通过C#做到这一点?(关于这个主题,我的其他SO问题涵盖了这种方法)

我意识到可能存在安全问题,我可能需要管理员权限,这没关系.在这一点上,我只需指出正确的方向继续我的研究.

更新:

我的目标是Windows XP.Vista支持很不错,但不是必需的.理想情况下,我只会阻止我的应用程序启动插入的USB驱动器,但阻止所有USB驱动器访问是可以接受的.

该应用程序将在我无法控制的机器上运行.基本上我的应用程序已安装,创建一个受限制的沙箱.然后,用户登录到我的应用程序,执行一些定时操作,然后注销.我的应用程序被删除,将PC恢复到以前的状态.我正在寻找一种基于代码的解决方案,使我能够对预先存在的环境做出最少的假设,包括我可以访问BIOS的假设.

scl*_*son 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
Run Code Online (Sandbox Code Playgroud)

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

已连接的任何设备将保留在那里,但不会自动安装插入的新USB驱动器.