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

时间:2010-02-15 15:14:23

标签: c# .net

我正在开发一个应用程序,需要暂时将计算机置于限制的,类似于kiosk的状态。我需要阻止的一件事是访问连接的USB驱动器。有没有办法做到这一点,通过C#,除了搞乱Windows组策略? (my other SO question on this topic

涵盖了这种方法

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

更新

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

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

1 个答案:

答案 0 :(得分: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驱动器。