我正在开发一个应用程序,该应用程序需要将机器暂时置于受限的,类似自助服务机的状态。我需要阻止的事情之一是访问连接的USB驱动器。除了弄乱Windows组策略之外,还有其他方法可以通过C#做到这一点吗? (该方法由my other SO question on this topic涵盖)

我意识到这可能会带来安全隐患,并且我可能需要对该盒子具有管理员权限,这没关系。此时,我只需要指出正确的方向即可继续我的研究。

更新:

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

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

最佳答案

您可以通过修改注册表来做到这一点。

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驱动器。

10-02 03:34