硬件设备的监控处理之三——(USB设备的禁用和启用)

来源:互联网 发布:java如何做app 编辑:程序博客网 时间:2024/05/17 02:38

两种方法,

方法一 查找注册表

 

 

思路:首先枚举注册表路径"HKEY_LOCAL_MACHINE//Drivers//Active"下的子键,从子键中查找键项"Key"的值是否包含"Drivers//USB//ClientDrivers//Mass_Storage_Class"字段,如果包含再取该键的键项"Name"的值,获取名字devName后调用如下代码,实现禁用

 

HANDLE hnd = OpenStore(devName);//(L"DSK1:")

if(hnd == NULL)

{

::MessageBox(NULL, L"USB打开失败", L"notice", MB_OK );

return ;

}

BOOL ret = DismountStore(hnd);

CloseHandle(hnd);

 

流程:

    启动对话框的时候先调用EnumActiveDir枚举注册表项"HKEY_LOCAL_MACHINE//Drivers//Active"下的子键,然后调用 SearchAndDismountUsbStro(PREG_ITEM_NAME change_itemStruct)函数对USB存储设备进行dismount

    响应窗口回调函数WindowProc,当接收到WM_DEVICECHANGE消息时,判断是否接入或者移除了USB存储设备,弹出提示对话框,根据用户的选择来dismount或者不处理。

    启用的话就是重新插入设备

相关函数:

SearchAndDismountUsbStro

 

EnumActiveDir

 

WindowProc

 

 

方法二 存储设备处理

 

 

思路:

禁用:

    USB存储设备,如果存储设备被打开其它人就没办法使用即可实现禁用效果,并且将"System//StorageManager//Profiles//USBHDProfile";中写入键项  MountHidden= 1,dismount掉SD卡

启用:

    将"System//StorageManager//Profiles//SDMemory";中写入键项  MountHidden= 0,mountSD卡

     重新插入SD卡即可启用

 

 

禁用USB存储设备

 

启用USB存储设备

 

 

原创粉丝点击