0

課題があるのですが、どうすればいいのかわからない!

基本的に、PC の CD ドライブを無効にして、ユーザーが使用できないようにしたいと考えています。

とにかくそれが私が始めたい方法です-最終的には、パスワードを知っていればCDドライブをロックおよびロック解除できるシステムトレイのアイコンが欲しいです。

ただし、どこかで開始する必要があります-VB.netでCDドライブの使用を無効にする方法を知っている人はいますか?

どんな助けでも大歓迎です。

アンドリュー

4

1 に答える 1

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} と一致した場合、ユーザーが何をしたいかによってデバイスを無効/有効にするように指示しました。

それらを有効または無効にするために、この便利なプログラムはすべてここから準備ができていることがわかりました。

次に、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 として実行されます。

時間ができたら終わらせますが、必要なものはすべてここにあるはずです。

これが誰かを少し助けることを願っています!

于 2010-02-16T12:43:14.837 に答える