pendrive가 USB 포트에 연결되어 있으면 C#을 사용하여 감지하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/271907

문제

LAN에서 누군가 USB 포트에 펜드라이브를 꽂았는지 알아낼 수 있는 방법이 있나요?프로그래밍 방식으로(바람직하게는 C#에서) 또는 일부 도구를 통해.기본적으로 클라이언트 애플리케이션이 각 터미널에 위치하여 USB 포트를 모니터링하고 정보를 서버로 보내는 것을 상상합니다.

a.) 복사되는 파일의 세부 정보를 얻을 수 있습니까?b.) 클라이언트 애플리케이션 없이 이를 수행할 수 있는 방법이 있습니까?

편집하다

USB 포트를 완전히 비활성화하고 싶지 않습니다.기초가 필요합니다.기본적으로 LAN의 사용자가 책임감 있게 데이터를 공유하고 전송되는 모든 데이터가 모니터링되고 기록되며 나중에 질문할 수 있다는 것을 알기를 바랍니다.

도움이 되었습니까?

해결책

C# 비고가 주어지면 Windows를 가정합니다. 그에 따라 태그를 보내주세요

예, 가능합니다. 그리고 파일의 세부 사항을 얻을 수 있습니다. 그러나 프로그래밍이 필요합니다. 주의하다 WM_DEVICECHANGE 그리고 나중에 재화를 재화시킵니다. USB Pendrives뿐만 아니라 SD 카드도 얻을 수 있습니다. 나는 그것이 당신에게 보너스라고 기대합니다.

드라이브가 도착했다는 것을 알면 더 자세한 내용을 얻으려면 사용하십시오. System.io.filesystemwatcher

업데이트더 나은 솔루션을 찾았습니다. 볼륨 인터페이스 알림에 등록하면 새 드라이브의 볼륨 경로가 표시됩니다. 먼저, a DEV_BROADCAST_DEVICEINTERFACE ~와 함께 dbcc_classguid=GUID_DEVINTERFACE_VOLUME. 그런 다음 이것을 전달하십시오 RegisterDeviceNotification(). 다시 WM_DEVICECHANGE를 얻을 수 있지만 이제 메시지에서 LPARAM을 캐스트 할 수 있습니다. DEV_BROADCAST_DEVICEINTERFACE*.

당신은 통과 할 수 있습니다 dbcc_name 당신은받습니다 GetVolumeNameForVolumeMountPoint(). 모든 드라이브 문자를 전달할 수도 있습니다 GetLogicalDriveStrings() 에게 GetVolumeNameForVolumeMountPoint(). 하나의 어울리는 볼륨 이름이 있습니다. 이것은 새로운 드라이브입니다.

다른 팁

또한 USB 장치에 대한 모든 정보가 저장된 레지스트리를 확인하십시오.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB

레지스트리에서 해당 키의 변경 사항을 연결하여 이에 따라 조치를 취할 수 있습니다.

이 무료 유틸리티는 탐색할 때 큰 도움이 됩니다. http://www.nirsoft.net/utils/usb_devices_view.html

USB 드라이브를 선택하고, 해당 드라이브에 대한 레지스트리 키를 열고, 장치를 활성화/비활성화하는 등의 작업을 선택할 수 있습니다.

레지스트리에서 장치가 연결되어 있는지, 대용량 저장소 유형인지, 기타 흥미로운 정보를 확인할 수 있습니다.regkey를 필터링하여 USB 대용량 저장 장치 드라이브를 얻은 다음 연결하고 변경 사항(연결/연결 끊기)을 기다리는 것은 쉽습니다.

Windows Management Instrumentation을 사용하면 레지스트리 이벤트를 수신하도록 등록할 수 있습니다.http://msdn.microsoft.com/en-us/library/aa393035(VS.85).aspx

.Net에서 System.Management를 확인하세요.

소규모 환경이고 USB 장치가 사용되는 것을 방지하려면 장치 관리자의 USB 포트를 비활성화 할 수 있으며, 사용자가 기계의 관리자로 설정되지 않도록하여 모든 USB 사용을 방지해야합니다.

그리고 당신이 그것에 대해 정말 편집증이라면, 기계를 열고 포트를 꽂습니다.

이 기사를 살펴보십시오. 메시지와 함께 일하는 방법을 설명합니다.USB 드라이브 제거 감지

나는 그것을 사용한 적이 없지만 IC#Code (SharpDevelop)의 사람들에게는 usblib가 있습니다. 어쩌면 그것은 당신을 도울 수 있습니다.

http://www.icsharpcode.net/opensource/sharpusblib/default.aspx

USB 썸 드라이브의 사용을 방지하려고 노력하고 있습니까? 그렇다면 액세스를 제한 할 수있는 그룹 정책이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top