Disable the use of CD drive (VB.NET)

2019-01-29 07:40发布

I have a task and no idea how to tackle it!

Basically, I want to disable the CD drive on a PC so our users can't use them.

That's how I want to start anyway - ultimately I'd like an icon in the system tray that allows the CD drive(s) to be locked and unlocked providing you know a password.

I need somewhere to start though - does anyone know how to disable the use of a CD drive in VB.net?

Any help would be appreciated.

Andrew

标签: vb.net cd
1条回答
啃猪蹄的小仙女
2楼-- · 2019-01-29 08:40

I found a way to do this.

Basically I needed to loop through all the items in the device manager like this:

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

I then took the DeviceID and ClassGuid sections.

If the Guid matched {4D36E965-E325-11CE-BFC1-08002BE10318} which is the GUID for a CD/DVD player, I told it to disable/enable the device dependent on what the user wanted to do.

To enable or disable them, I found this handy program all ready to go from here .

I then simply edited Form1.vb this:

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

That will then loop through the CD/DVD drives in device manager and disable/enable them.

I have yet to tidy the code up - and I need to run the script as a thread because it hangs at the moment while it's doing it's thing.

I also intend to get the program to work out what state the CD drives are in using a timer event - and then report back accordingly... I then need to get it to run in the system tray with no form and finally get it to run as the LSA with desktop interaction enabled.

I'll finish it when I get a moment - but everything you need should be here.

Hope this helps someone out a bit!

查看更多
登录 后发表回答