计算机同一优盘记录,怎么查看电脑插过U盘的记录

1、其实USB存储设备在插入电脑的时候计算机早已悄悄记录下这些设备的「踪迹」,下面就来看看,怎么找出曾经连接过的USB设备型号,这样就可以大致知道是谁的设备了。

bb61ed8c0008dd540ba3ae76ff1ae350.png

2、一般系统在加载驱动的时候就会把USB存储设备型号记在注册表里。找出方法:开始---运行----regedit 然后依次打开:HKEY_LOCAL_MACHINE\System\currentcontrolset\enum\usbstor\就是所要找的设备。

1402bcf1ed57891ed20248b59a7a051e.png

3、也可以使用“命令提示符”导出到文本文档中查看所有的插过的USB存储设备。方法:开始---运行----cmd-----reg  query  HKLM\System\currentcontrolset\enum\usbstor  /s  >c:\usb.txt。

d34b8936aa306b4032e3b187a7cf7351.png

4、运行完上面的命令以后可以到C盘下找到usb.txt找开并按下〔Ctrl〕+〔F〕搜索「FriendlyName」,每一行FriendlyName后面的字串就是一个设备。这样就可以找到到底电脑接过哪些USB存储设备。

a7a226335bfa36d4f9ffb836f493cabe.png

5、下面是USB设备名称。

1b2bf96e75ab6e01f1766a0c9ea51b9d.png

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java提供的JNA库来实现U盘插入监控,同时使用Java的IO流来记录上传下载行为记录。具体实现可以参考以下代码: import com.sun.jna.platform.win32.*; import com.sun.jna.platform.win32.WinNT.HANDLE; import com.sun.jna.platform.win32.WinNT.HANDLEByReference; import com.sun.jna.platform.win32.WinNT.PVOID; import com.sun.jna.platform.win32.WinNT.ULONG_PTR; import com.sun.jna.platform.win32.WinUser.*; public class USBMonitor { private static final int WM_DEVICECHANGE = 0x0219; private static final int DBT_DEVICEARRIVAL = 0x8000; private static final int DBT_DEVICEREMOVECOMPLETE = 0x8004; private static final int DBT_DEVTYP_VOLUME = 0x00000002; private static final int DBT_DEVNODES_CHANGED = 0x0007; private static final int FILE_SHARE_READ = 0x00000001; private static final int FILE_SHARE_WRITE = 0x00000002; private static final int FILE_SHARE_DELETE = 0x00000004; private static final int OPEN_EXISTING = 3; private static final int GENERIC_READ = 0x80000000; private static final int GENERIC_WRITE = 0x40000000; private static final int FILE_ATTRIBUTE_NORMAL = 0x80; private static final int FILE_FLAG_BACKUP_SEMANTICS = 0x02000000; private static final String DRIVE_LETTER_PREFIX = "\\\\?\\"; private static final String VOLUME_GUID_PREFIX = "\\\\?\\Volume{"; private static final String VOLUME_GUID_SUFFIX = "}\\"; private static final String LOG_FILE_PATH = "C:\\usb_log.txt"; private static HANDLE hLogFile = null; public static void main(String[] args) { hLogFile = Kernel32.INSTANCE.CreateFile(LOG_FILE_PATH, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, null, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, null); if (hLogFile == WinBase.INVALID_HANDLE_VALUE) { System.err.println("Failed to open log file: " + LOG_FILE_PATH); return; } WndProc usbWndProc = new WndProc() { @Override public LRESULT callback(HWND hWnd, int uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg == WM_DEVICECHANGE) { switch (wParam.intValue()) { case DBT_DEVICEARRIVAL: DEV_BROADCAST_VOLUME vol = new DEV_BROADCAST_VOLUME(lParam); if (vol.dbcv_devicetype == DBT_DEVTYP_VOLUME) { String driveLetter = getDriveLetter(vol.dbcv_unitmask); String volumeGuid = getVolumeGuid(driveLetter); log("U盘插入: " + volumeGuid); } break; case DBT_DEVICEREMOVECOMPLETE: DEV_BROADCAST_VOLUME vol2 = new DEV_BROADCAST_VOLUME(lParam); if (vol2.dbcv_devicetype == DBT_DEVTYP_VOLUME) { String driveLetter = getDriveLetter(vol2.dbcv_unitmask); String volumeGuid = getVolumeGuid(driveLetter); log("U盘拔出: " + volumeGuid); } break; case DBT_DEVNODES_CHANGED: log("设备节点变化"); break; } } return User32.INSTANCE.DefWindowProc(hWnd, uMsg, wParam, lParam); } }; String className = "USBMonitor"; WNDCLASS wc = new WNDCLASS(); wc.lpfnWndProc = usbWndProc; wc.hInstance = Kernel32.INSTANCE.GetModuleHandle(""); wc.lpszClassName = className; User32.INSTANCE.RegisterClass(wc); HWND hWnd = User32.INSTANCE.CreateWindowEx(0, className, className, 0, 0, 0, 0, 0, null, null, null, null); if (hWnd == null) { System.err.println("Failed to create window"); return; } DEV_BROADCAST_DEVICEINTERFACE notificationFilter = new DEV_BROADCAST_DEVICEINTERFACE(); notificationFilter.dbcc_size = notificationFilter.size(); notificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; GUID guid = new GUID(); guid.guidData1 = 0xA5DCBF10; guid.guidData2 = 0x6530; guid.guidData3 = 0x11D2; guid.guidData4 = new byte[]{(byte) 0x90, 0x1F, 0x00, (byte) 0xC0, 0x4F, (byte) 0xB9, 0x51, (byte) 0xED}; notificationFilter.dbcc_classguid = guid; HDEVNOTIFY hDevNotify = User32.INSTANCE.RegisterDeviceNotification(hWnd, notificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE); if (hDevNotify == null) { System.err.println("Failed to register device notification"); return; } MSG msg = new MSG(); while (User32.INSTANCE.GetMessage(msg, hWnd, 0, 0) > 0) { User32.INSTANCE.TranslateMessage(msg); User32.INSTANCE.DispatchMessage(msg); } User32.INSTANCE.UnregisterDeviceNotification(hDevNotify); User32.INSTANCE.DestroyWindow(hWnd); Kernel32.INSTANCE.CloseHandle(hLogFile); } private static String getDriveLetter(int unitmask) { for (char c = 'A'; c <= 'Z'; c++) { if ((unitmask & 0x01) != 0) { return DRIVE_LETTER_PREFIX + c + ":"; } unitmask >>>= 1; } return null; } private static String getVolumeGuid(String driveLetter) { char[] volumeGuid = new char[1024]; int length = Kernel32.INSTANCE.QueryDosDevice(driveLetter, volumeGuid, volumeGuid.length); if (length == 0) { return null; } String volumeGuidStr = new String(volumeGuid, 0, length); if (!volumeGuidStr.startsWith(VOLUME_GUID_PREFIX) || !volumeGuidStr.endsWith(VOLUME_GUID_SUFFIX)) { return null; } return volumeGuidStr.substring(VOLUME_GUID_PREFIX.length(), volumeGuidStr.length() - VOLUME_GUID_SUFFIX.length()); } private static void log(String message) { String logMessage = String.format("[%s] %s\n", new Date(), message); byte[] logBytes = logMessage.getBytes(StandardCharsets.UTF_8); ULONG_PTR bytesWritten = new ULONG_PTR(); Kernel32.INSTANCE.WriteFile(hLogFile, logBytes, logBytes.length, bytesWritten, null); } } 注意:这段代码只能在Windows操作系统上运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值