Disable the use of CD drive (VB.NET)

前端 未结 1 1797
滥情空心
滥情空心 2020-12-22 07:30

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 anywa

相关标签:
1条回答
  • 2020-12-22 08:07

    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!

    0 讨论(0)
提交回复
热议问题