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!
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? –