程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#禁用USB的兩種方法(附代碼)

C#禁用USB的兩種方法(附代碼)

編輯:C#入門知識

方法一:通過修改注冊表禁用USB

 

      原理:只要把注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR路徑下的Start值改成4即可禁用USB(默認為3,即允許USB)。

      優點:簡單易行。

      缺點:地球人都知道,很容易識破。

      建議:用一個timer或者創建一個線程,來鎖定這個值。

 

      程序代碼:

[csharp] 
using Microsoft.Win32; 
 
/// <summary> 
/// 通過注冊表啟用USB 
/// </summary> 
/// <returns></returns> 
public bool RegToRunUSB()  

    try 
    { 
        RegistryKey regKey = Registry.LocalMachine; //讀取注冊列表HKEY_LOCAL_MACHINE 
        string keyPath = @"SYSTEM\CurrentControlSet\Services\USBSTOR"; //USB 大容量存儲驅動程序 
        RegistryKey openKey = regKey.OpenSubKey(keyPath, true); 
        openKey.SetValue("Start", 3); //設置鍵值對(3)為開啟USB(4)為關閉 
        openKey.Close(); //關閉注冊列表讀寫流 
        return true; 
    } 
    catch (Exception ex)  
    { 
        throw ex; 
    } 

 
/// <summary> 
/// 通過注冊表禁用USB 
/// </summary> 
/// <returns></returns> 
public bool RegToStopUSB()  

    try 
    { 
        RegistryKey regKey = Registry.LocalMachine; 
        string keyPath = @"SYSTEM\CurrentControlSet\Services\USBSTOR"; 
        RegistryKey openKey = regKey.OpenSubKey(keyPath, true); 
        openKey.SetValue("Start", 4); 
        openKey.Close(); 
        return true; 
    } 
    catch (Exception ex) 
    { 
        throw ex; 
    } 

方法二:通過獨占USB驅動文件禁用USB

 

      原理:如果U盤第一次在某個電腦上使用,電腦會自動安裝該U盤的驅動信息,修改C:\Windows\inf\usbstor.inf和C:\Windows\inf\usbstor.PNF這兩個文件。假如我們用C#程序以獨占的形式打開他們,那麼Windows便無法修改這兩個文件,U盤驅動安裝不上自然無法使用。

      優點:簡單易行,不容易識破。

      缺點:只能禁用未在該電腦上使用過的U盤。 www.2cto.com

      建議:一定要注意獨占的時候文件打開對象要用類的成員變量(也就是模塊級變量),如果用局部變量,會自動被托管程序釋放,達不到獨占的效果。

 

      程序代碼:

      注:以下fs和fs1對象變量我是放在了窗體中,作為窗體類的成員變量。


[csharp] 
using System.IO; 
 
public FileStream fs = null; 
public FileStream fs1 = null; 
 
//以獨占方式打開文件 
fs = new FileStream("C:\\Windows\\inf\\usbstor.inf", FileMode.Open, FileAccess.Read, FileShare.None); 
fs1 = new FileStream("C:\\Windows\\inf\\usbstor.PNF", FileMode.Open, FileAccess.Read, FileShare.None); 


作者:yangyuankp

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved