用過超級兔子的都知道,有一個隱藏磁碟
的功能,選擇隱藏的磁碟,確定後,
重新啟動,看到磁碟隱藏了
主要是通過操作註冊表來實現這個功能的
開啟註冊表
開啟HKEY_CURRENT_USER/Software
/Microsoft/Windows/CurrentVersion
/Policies/Explorer分支
在這個分支下,NoDrives索引值可以進行設定。
磁碟機一一對應的索引值如下:
A驅:0x00000001,B驅:0x00000002,
C驅:0x00000004,D驅:0x00000008,
E驅:0x00000010,F驅:0x00000020.
即按磁碟機的英文字母順序(A~Z)從十六進位的二倍數遞增.將你要隱藏的磁碟機所對應的索引值按十六進位相加賦值給”NoDrivers”,如果要隱藏A,C,D,則將0x0000000D賦值給”NoDrives”
代碼如下:WinXP+VB+SP6
winxp下登出重新登陸即可看到
添加list控制項,command控制項
Option Explicit
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Private Sub Command3_Click()
Dim i As Integer
Dim KeyValue As Long
Dim hCurKey As Long
Dim lRegResult As Long
Dim KeyID As Long
Dim subKey As String
Dim regkey As String
Dim retvalue As Long
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then
MsgBox List1.List(i)
KeyValue = KeyValue + List1.ItemData(i)
End If
Next
'如果沒有選擇,刪除NoDrivers索引值,取消所有磁碟的隱藏
regkey = "Software/Microsoft/Windows/CurrentVersion/Policies/Explorer"
subKey = "NoDrives"
If KeyValue = 0 Then
lRegResult = RegOpenKey(HKEY_CURRENT_USER, regkey, hCurKey)
lRegResult = RegDeleteValue(hCurKey, subKey)
lRegResult = RegCloseKey(hCurKey)
Else
'根據選擇的磁碟進行隱藏
retvalue = RegCreateKey(HKEY_CURRENT_USER, regkey, KeyID)
subKey = "NoDrives"
'KeyValue = a1
retvalue = RegSetValueEx(KeyID, subKey, 0&, 4, KeyValue, 4)
End If
End Sub
Private Sub Command4_Click()
Unload Me
End Sub
Private Sub Form_Load()
List1.AddItem "A:"
List1.ItemData(0) = 1
List1.AddItem "B:"
List1.ItemData(1) = 2
List1.AddItem "C:"
List1.ItemData(2) = 4
List1.AddItem "D:"
List1.ItemData(3) = 8
List1.AddItem "E:"
List1.ItemData(4) = 16
List1.AddItem "F:"
List1.ItemData(5) = 32
List1.AddItem "G:"
List1.ItemData(6) = 64
List1.AddItem "H:"
List1.ItemData(7) = 128
List1.AddItem "I:"
List1.ItemData(8) = 256
List1.AddItem "J:"
List1.ItemData(9) = 512
List1.AddItem "K:"
List1.ItemData(10) = 1024
List1.AddItem "L:"
List1.ItemData(11) = 2048
List1.AddItem "M:"
List1.ItemData(12) = 4096
List1.AddItem "N:"
List1.ItemData(13) = 8192
List1.AddItem "O:"
List1.ItemData(14) = 16384
List1.AddItem "P:"
List1.ItemData(15) = 32768
List1.AddItem "Q:"
List1.ItemData(16) = 65536
List1.AddItem "R:"
List1.ItemData(17) = 131072
List1.AddItem "S:"
List1.ItemData(18) = 262144
List1.AddItem "T:"
List1.ItemData(19) = 524288
List1.AddItem "U:"
List1.ItemData(20) = 1048576
List1.AddItem "V:"
List1.ItemData(21) = 2097152
List1.AddItem "W:"
List1.ItemData(22) = 4194304
List1.AddItem "X:"
List1.ItemData(23) = 8388608
List1.AddItem "Y:"
List1.ItemData(24) = 16777216
List1.AddItem "Z:"
List1.ItemData(25) = 33554432
End Sub