C#禁用USB的两种方法(附代码)

方法一:通过修改注册表禁用USB

 

      原理:只要把注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR路径下的Start值改成4即可禁用USB(默认为3,即允许USB)。

      优点:简单易行。

      缺点:地球人都知道,很容易识破。

      建议:用一个timer或者创建一个线程,来锁定这个值。

 

      程序代码:

[csharp]  view plain  copy
 print ?
  1. using Microsoft.Win32;  
  2.   
  3. ///   
  4. /// 通过注册表启用USB  
  5. ///   
  6. ///   
  7. public bool RegToRunUSB()   
  8. {  
  9.     try  
  10.     {  
  11.         RegistryKey regKey = Registry.LocalMachine; //读取注册列表HKEY_LOCAL_MACHINE  
  12.         string keyPath = @"SYSTEM\CurrentControlSet\Services\USBSTOR"//USB 大容量存储驱动程序  
  13.         RegistryKey openKey = regKey.OpenSubKey(keyPath, true);  
  14.         openKey.SetValue("Start", 3); //设置键值对(3)为开启USB(4)为关闭  
  15.         openKey.Close(); //关闭注册列表读写流  
  16.         return true;  
  17.     }  
  18.     catch (Exception ex)   
  19.     {  
  20.         throw ex;  
  21.     }  
  22. }  
  23.   
  24. ///   
  25. /// 通过注册表禁用USB  
  26. ///   
  27. ///   
  28. public bool RegToStopUSB()   
  29. {  
  30.     try  
  31.     {  
  32.         RegistryKey regKey = Registry.LocalMachine;  
  33.         string keyPath = @"SYSTEM\CurrentControlSet\Services\USBSTOR";  
  34.         RegistryKey openKey = regKey.OpenSubKey(keyPath, true);  
  35.         openKey.SetValue("Start", 4);  
  36.         openKey.Close();  
  37.         return true;  
  38.     }  
  39.     catch (Exception ex)  
  40.     {  
  41.         throw ex;  
  42.     }  
  43. }  

方法二:通过独占USB驱动文件禁用USB

 

      原理:如果U盘第一次在某个电脑上使用,电脑会自动安装该U盘的驱动信息,修改C:\Windows\inf\usbstor.inf和C:\Windows\inf\usbstor.PNF这两个文件。假如我们用C#程序以独占的形式打开他们,那么Windows便无法修改这两个文件,U盘驱动安装不上自然无法使用。

      优点:简单易行,不容易识破。

      缺点:只能禁用未在该电脑上使用过的U盘。

      建议:一定要注意独占的时候文件打开对象要用类的成员变量(也就是模块级变量),如果用局部变量,会自动被托管程序释放,达不到独占的效果。

 

      程序代码:

      注:以下fs和fs1对象变量我是放在了窗体中,作为窗体类的成员变量。


[csharp]  view plain  copy
 print ?
  1. using System.IO;  
  2.   
  3. public FileStream fs = null;  
  4. public FileStream fs1 = null;  
  5.   
  6. //以独占方式打开文件  
  7. fs = new FileStream("C:\\Windows\\inf\\usbstor.inf", FileMode.Open, FileAccess.Read, FileShare.None);  
  8. fs1 = new FileStream("C:\\Windows\\inf\\usbstor.PNF", FileMode.Open, FileAccess.Read, FileShare.None);  

你可能感兴趣的:(C#禁用USB的两种方法(附代码))