改一下注冊表

今天又面了一家,問我能不能禁用端口,問我能否在加載OS前攔截,輸入密碼正確後再加載操作系統(這個問題後面再說)。我估計他說的不是網絡端口,就問他是不是網絡的端口,BOSS指了指電腦。我明白了是USB的。正好昨天看了一下注冊表的東西。我說這個理論上是沒有問題的。改註冊表就可以。不過我沒有編過,可以嘗試一下。

折騰註冊表還是用VB,VC#容易。這個java還要用什麼驅動。太複雜了。

剛纔裝上VS2005。百度後。發現把HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/USBSTOR下面的Start的3改成4就OK。現場手動修改了一下。沒有問題。改成3,4確實能看是否打開關閉USB的存儲功能。對USB接口的鼠標無壓力。

好,百度vb程序。太複雜了。又百度C#程序。找到結果。

於是編碼如下

Code:
  1. ...省略該加載的   
  2. using Microsoft.Win32;    
  3.   
  4. 。。。。省略該省略的。。。   
  5. //禁用u盤的代碼   
  6.         private void button1_Click(object sender, EventArgs e)   
  7.         {   
  8.             RegistryKey hkml = Registry.LocalMachine;   
  9.             RegistryKey USBSTOR = hkml.OpenSubKey("system//CurrentControlSet//Services//USBSTOR"true);   
  10.             USBSTOR.SetValue("Start","4");//注意這裏的4  
  11.         }   
  12. 。。。。省略剩下的。  

編譯,報錯,說object什麼void類型。一看範例,是用“”我也就改成了雙引號,再編譯,成功

運行一下。沒有問題。成功禁用掉。

現在再改回來,我繼續手動改。我改,我改,改不會來了 。重啓。問題依舊。

打開註冊表。之前Start的值是reg_dword而程序運行完了之後變成了reg_sz,於是上網百度修復。

重寫整個USBSTOR值

保存爲1.reg

Code:
  1. Windows Registry Editor Version 5.00   
  2.   
  3.   
  4.   
  5. [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/USBSTOR]   
  6. "Type"=dword:00000001   
  7. "Start"=dword:00000003   
  8. "ErrorControl"=dword:00000001   
  9. "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,/   
  10.   52,00,49,00,56,00,45,00,52,00,53,00,5c,00,55,00,53,00,42,00,53,00,54,00,4f,/   
  11.   00,52,00,2e,00,53,00,59,00,53,00,00,00   
  12. "DisplayName"="USB 大容量存儲設備"  
  13.   
  14. [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/USBSTOR/Security]   
  15. "Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,/   
  16.   00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,/   
  17.   00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,/   
  18.   05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,/   
  19.   20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,/   
  20.   00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,/   
  21.   00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00   
  22.   

問題解決。太恐怖了。沒事不要動註冊表,第二這個又重新看了set的所有方法,我暫時沒辦法sz改成dword。

用RegistryKey類還不如提前寫好reg文件,直接調用呢。

能否在加載OS前攔截這個也可以。在加載OS的時候相應的地方插入一段代碼就可以了。有意思的需求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章