2008-11-07 38 views
13

Có cách nào để tìm hiểu khi nào trong một mạng LAN có ai cắm vào ổ đĩa USB không? Có lập trình (trong C# tốt hơn) hoặc thông qua một số công cụ. Về cơ bản tôi tưởng tượng một ứng dụng khách hàng nằm trên mỗi thiết bị đầu cuối và giám sát các cổng USB và gửi thông tin đến máy chủ.Làm thế nào để phát hiện bằng cách sử dụng C# nếu một ổ đĩa được cắm vào cổng USB?

a.) Tôi có thể lấy chi tiết của (các) tệp được sao chép không? b.) Có cách nào để thực hiện việc này mà không cần ứng dụng khách không?

EDIT

Tôi không muốn tắt hoàn toàn cổng USB. nó cần phải có cơ sở. Về cơ bản chỉ muốn người dùng trên mạng LAN chia sẻ dữ liệu một cách có trách nhiệm và biết rằng bất kỳ dữ liệu nào được tranfer được giám sát và ghi lại và có thể được hỏi sau.

Trả lời

13

[Giả sử Windows, với nhận xét C#. Vui lòng gắn thẻ cho phù hợp]

Có, điều này là có thể. Và nó có thể nhận được các chi tiết của tập tin. Nó sẽ yêu cầu lập trình, mặc dù. Theo dõi cho WM_DEVICECHANGE và tái liệt kê các ổ đĩa sau đó. Nó sẽ giúp bạn có được USB pendrives, nhưng cũng có thẻ SD. Tôi hy vọng đó là một tiền thưởng cho bạn.

Để biết thêm chi tiết khi bạn biết một ổ đĩa đã đến, sử dụng System.IO.FileSystemWatcher

Cập nhật Tôi tìm thấy một giải pháp tốt hơn - nếu bạn đăng ký thông báo giao diện âm lượng, bạn sẽ nhận được con đường âm lượng cho các mới lái xe. Trước tiên, tạo một DEV_BROADCAST_DEVICEINTERFACE với dbcc_classguid=GUID_DEVINTERFACE_VOLUME. Sau đó, chuyển thông tin này đến RegisterDeviceNotification(). Bạn sẽ lại nhận được WM_DEVICECHANGE nhưng bây giờ bạn có thể truyền lParam từ tin nhắn đến DEV_BROADCAST_DEVICEINTERFACE*.

Bạn có thể chuyển số dbcc_name bạn nhận được đến GetVolumeNameForVolumeMountPoint(). Bạn cũng có thể chuyển tất cả chữ cái ổ đĩa từ GetLogicalDriveStrings() đến GetVolumeNameForVolumeMountPoint(). Bạn sẽ có một tên khối lượng phù hợp; đây là ổ đĩa mới.

+0

Bah, lỗi trình phân tích cú pháp URL. Tài liệu WM_DEVICECHANGE @ http://msdn.microsoft.com/en-us/library/aa363480(VS.85).aspx – MSalters

0

Bạn đang cố gắng ngăn chặn việc sử dụng ổ USB? Nếu có chính sách nhóm cho phép bạn hạn chế quyền truy cập.

+0

Không hoàn toàn. nó cần có cơ sở. Về cơ bản chỉ muốn người dùng trên mạng LAN chia sẻ dữ liệu một cách có trách nhiệm và biết rằng bất kỳ dữ liệu nào được tranfer được giám sát và ghi lại và có thể được hỏi sau. – user20358

1

Nếu môi trường nhỏ và bạn muốn ngăn không cho bất kỳ thiết bị USB nào sử dụng, bạn có thể tắt cổng USB trong trình quản lý thiết bị, đảm bảo không có người dùng nào được thiết lập làm quản trị viên trên máy và ngăn chặn tất cả usb sử dụng.

Và nếu bạn thực sự hoang tưởng về nó, chỉ cần mở máy và cắm cổng ra.

3

Ngoài ra, hãy kiểm tra sổ đăng ký nơi tất cả thông tin được lưu trữ về thiết bị USB. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB

Bạn có thể móc vào các thay đổi của khóa đó trong sổ đăng ký và hành động theo đó.

tiện ích miễn phí này là một trợ giúp lớn khi pooking xung quanh: http://www.nirsoft.net/utils/usb_devices_view.html

Bạn có thể chọn một usb-ổ đĩa, chọn để mở khóa registry cho ổ đĩa đó và bật/tắt thiết bị và nhiều hơn nữa.

Trong sổ đăng ký, bạn có thể xem thiết bị có được kết nối không, nếu nó thuộc loại massstorage và thông tin liên tục khác. Dễ dàng lọc các regkey để chỉ nhận các ổ đĩa USB và sau đó móc vào và đợi các thay đổi (kết nối/ngắt kết nối).

Với Windows Management Instrumentation bạn có thể đăng ký để nhận được các sự kiện Registry: http://msdn.microsoft.com/en-us/library/aa393035(VS.85).aspx

Check-out System.Management trong Net

Các vấn đề liên quan