2010-02-15 8 views
0

J'ai une tâche et je ne sais pas comment l'aborder!Désactiver l'utilisation du lecteur de CD (VB.NET)

Fondamentalement, je veux désactiver le lecteur de CD sur un PC afin que nos utilisateurs ne puissent pas les utiliser.

C'est comme ça que je veux commencer quand même - en fin de compte je voudrais une icône dans la barre d'état système qui permet de verrouiller et de déverrouiller le ou les lecteurs de CD en fournissant un mot de passe.

J'ai besoin d'un endroit pour commencer - est-ce que quelqu'un sait comment désactiver l'utilisation d'un lecteur de CD dans VB.net?

Toute aide serait appréciée.

Andrew

+0

Je pense que l'une des façons pourrait être de désactiver l'appareil dans le Gestionnaire de périphériques - il suffit de désactiver toutes les entrées dans la section DVD/CD-ROM ... mais comment ferais-je cela? –

Répondre

1

J'ai trouvé un moyen de le faire.

Fondamentalement, je devais faire une boucle à travers tous les éléments dans le gestionnaire de périphériques comme celui-ci:

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

Je pris alors les sections DEVICEID et ClassGuid. Si le Guid correspond à {4D36E965-E325-11CE-BFC1-08002BE10318} qui est le GUID d'un lecteur de CD/DVD, je lui ai demandé de désactiver/activer le périphérique en fonction de ce que l'utilisateur voulait faire.

Pour les activer ou les désactiver, j'ai trouvé ce programme pratique prêt à l'emploi from here.

Je puis simplement Form1.vb ce edited:

Imports System.Management 

Public Class 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 

End Class

qui boucle ensuite par les lecteurs de CD/DVD dans le gestionnaire de périphériques et les désactiver/les activer.

Je n'ai pas encore ranger le code - et j'ai besoin d'exécuter le script comme un fil de discussion parce qu'il se bloque pour le moment pendant qu'il le fait. J'ai également l'intention d'obtenir le programme pour déterminer dans quel état les lecteurs de CD sont en utilisant un événement de minuterie - et puis rapporter en conséquence ... Je dois alors le faire fonctionner dans la barre d'état système sans forme et enfin l'obtenir pour fonctionner comme LSA avec l'interaction de bureau activée.

Je vais finir quand j'aurai un moment - mais tout ce dont vous avez besoin devrait être ici.

J'espère que cela aidera quelqu'un un peu!

Questions connexes