コンピューターの USB 大容量記憶装置デバイス、具体的には使用するポートをプログラムで有効または無効にする良い方法を見つけようとしています。特定のエクスポート機能を実行している間だけ USB ドライブにアクセスできるようにしたいです。私たちのセキュリティ要件は非常に厳しいため、USB からコンピュータにプログラムを転送したり実行したりすることは許可したくありません。
USB 機能を持つことは常にリスクであり、完全に安全であるとは期待できませんが、攻撃の可能性を最小限に抑えたいと考えています。
私が試したのは、USBSTOR の reg キー値を 4 に設定することです。
Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start", 4, Microsoft.Win32.RegistryValueKind.DWord);
これにより、USB デバイスが無効になり、USB ドライブがスロットに挿入されると自動的にロードされなくなります。さて、「オン」に戻すと:
Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start", 3, Microsoft.Win32.RegistryValueKind.DWord);
USB デバイスが既にスロットに挿入されている場合、そのデバイスは自動的にロードされません。新しく挿入された場合にのみロードされます。
このレジストリ キーを有効にした後、強制的にスキャンして USB デバイスを探す方法はありますか?
または、プログラムで USB ポートを有効/無効にする別の方法はありますか?
を調べましたLibUsbDotNet
が、ハードウェア ID を使用しているようですが、問題は、これらの ID が USB ドライブごとに異なることであり、それらすべてをサポートしたいと考えています。可能であれば、実際のドライブ レベルではなく、ポート レベルでアクセスを切り替えたいと考えています。
何かアドバイス?
編集: ポートの「場所」を見つけました。Port_#0004.Hub_#0008
この情報でできることはありますか?
Edit2:USBドライブの「親」を見つけました。これはUSBルートハブです。コードを使用してそれを行う方法を見つけるために、それを有効または無効にすることで望ましい効果が得られます。