2010-02-15 74 views
0

我有一個任務,不知道如何解決它!禁用使用光盤驅動器(VB.NET)

基本上,我想禁用PC上的CD驅動器,所以我們的用戶不能使用它們。

這就是我想要開始的方式 - 最終我想要一個系統托盤中的圖標,允許您鎖定和解鎖CD驅動器並提供您知道的密碼。

我需要開始的地方,但有人知道如何禁用在VB.net中使用的CD驅動器?

任何幫助,將不勝感激。

安德魯

+0

我在想,有一種方法可能是禁用設備管理器中的設備 - 只需禁用DVD/CD-ROM中的所有條目......但我該怎麼做? – 2010-02-15 16:27:55

回答

1

我找到了一種方法來做到這一點。

基本上我需要依次通過在設備管理器中的所有項目是這樣的:

search = New System.Management.ManagementObjectSearcher("SELECT * From Win32_PnPEntity") 
      For Each info In search.Get() 
       ' Go through each device detected. 
      Next 

我然後拿着的DeviceID和ClassGuid部分。

如果Guid與CD/DVD播放機的GUID匹配{4D36E965-E325-11CE-BFC1-08002BE10318},我告訴它禁用/啓用取決於用戶想要做什麼的設備。

要啓用或禁用它們,我發現這個方便的程序都準備好去from here

然後,我只不過是編輯Form1.vb的是:

Imports System.Management 

公共類Form1中

Private Sub btnEnable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnable.Click 
    getCdDrives("Enable") 
End Sub 

Private Sub btnDisable_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisable.Click 
    getCdDrives("Diable") 
End Sub 

Public Function getCdDrives(ByVal EnableOrDisable As String) As Boolean 
    If InputBox("password") = "password" Then 
     Try 
      Dim info As System.Management.ManagementObject 
      Dim search As System.Management.ManagementObjectSearcher 
      Dim deviceGuid As String 
      Dim deviceType As String 
      Dim cameraIsSeenByWindows As Boolean = False 
      Dim showDebugPrompts As Boolean = False 
      Dim actualGuid As Guid 

      search = New System.Management.ManagementObjectSearcher("SELECT * From Win32_PnPEntity") 
      For Each info In search.Get() 
       ' Go through each device detected. 
       deviceType = CType(info("DeviceID"), String) 
       deviceGuid = CType(info("ClassGuid"), String) 
       If deviceGuid = "{4D36E965-E325-11CE-BFC1-08002BE10318}" Then 
        actualGuid = New Guid(deviceGuid) 
        If EnableOrDisable = "Enable" Then 
         DeviceHelper.SetDeviceEnabled(actualGuid, deviceType, True) 
        Else 
         DeviceHelper.SetDeviceEnabled(actualGuid, deviceType, False) 
        End If 
       End If 
      Next 
      If EnableOrDisable = "Enable" Then 
       btnDisable.Enabled = True 
       btnEnable.Enabled = False 
      Else 
       btnDisable.Enabled = False 
       btnEnable.Enabled = True 
      End If 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    Else 
     MsgBox("Oooh Va Vu!!") 
    End If 
End Function 

末級

這也就那麼通過在設備管理器中的CD/DVD驅動器環路和禁用/啓用它們。

我還沒有整理代碼 - 我需要將腳本作爲一個線程來運行,因爲它在執行它的時候會掛起。

我還打算讓程序計算出CD驅動器在使用計時器事件時的狀態 - 然後相應地報告回來......然後我需要讓它在沒有窗體的系統托盤中運行,最後讓它像運行桌面交互的LSA一樣運行。

當我得到片刻時,我會完成它 - 但你需要的一切應該在這裏。

希望這可以幫助別人一點點!