社区
Windows SDK/API
帖子详情
如何实现不禁用USB鼠标,禁用U盘?
zhgwbzhd
2009-10-20 02:49:11
我通过这两天的查询。
已经实现了,可以禁用所有的USB接口或者某个指定的接口。
但是,我如何实现不禁用USB鼠标,键盘??
谢谢啊!
...全文
920
13
打赏
收藏
如何实现不禁用USB鼠标,禁用U盘?
我通过这两天的查询。 已经实现了,可以禁用所有的USB接口或者某个指定的接口。 但是,我如何实现不禁用USB鼠标,键盘?? 谢谢啊!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
花气袭人知昼暖
2010-12-30
打赏
举报
回复
我现在也在写这个程序,不知道楼主解决了问题没有?
zjj_zjj
2009-11-18
打赏
举报
回复
USB 键盘的CLASSID 是多少,我忘了,可以用此来进行区别的
USB\\CLASS_08
zhgwbzhd
2009-11-01
打赏
举报
回复
哦,谢谢啊。
我试试。
gangliche
2009-10-29
打赏
举报
回复
代碼:
HDEVINFO hDevInfo;
bool Success, BNewValue;
struct {DWORD cbSize; char DevicePath[256];} FunctionClassDeviceData;
SP_INTERFACE_DEVICE_DATA DeviceInterfaceData;
SP_DEVINFO_DATA DeviceInfoData;
// DWORD i;
DWORD i,j,k,p,q,BytesReturned;
char Msg[300]={0};
//--------------------------------------------------------------------------
hDevInfo = SetupDiGetClassDevs((LPGUID)&GUID_CLASS_USB_DEVICE,
0, // Enumerator
0,
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE );
if (hDevInfo == INVALID_HANDLE_VALUE) {
printf("ERROR - SetupDiGetClassDevs()");
return false ;
}
//--------------------------------------------------------------------------
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (i=0;SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData);i++)
{
Application->ProcessMessages();
if ( bStop->Tag == 1 )
return false;//exit timer1
sprintf(Msg,"Device [%d]",i);
iXprintf ("%s",Msg);
//should do this before SetupDiEnumDeviceInterfaces(hDevInfo, NULL, (LPGUID)&GUID_CLASS_USB_DEVICEA, i, &DeviceInterfaceData);
DeviceInterfaceData.cbSize = sizeof(DeviceInterfaceData);
Success = SetupDiEnumDeviceInterfaces(hDevInfo, NULL, (LPGUID)&GUID_CLASS_USB_DEVICE, i, &DeviceInterfaceData);
if (Success)
{
// There is a device here, get it's name
FunctionClassDeviceData.cbSize = 5;
Success = SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData,
(PSP_INTERFACE_DEVICE_DETAIL_DATA)&FunctionClassDeviceData, 256, &BytesReturned, NULL);
if (!Success)
{
sprintf(Msg,"%s",SysErrorMessage(GetLastError()));
iXprintf("Get USB informtion Fail [%s]",Msg);
return false;
}
else
{
sprintf(Msg,"%s",FunctionClassDeviceData.DevicePath);
iXprintf("%s",Msg);
char Dir[80];
ZeroMemory(Dir,sizeof(Dir));
k = 0;
p = 0;
for ( j = 0; j < strlen(FunctionClassDeviceData.DevicePath); j++ )
{//FunctionClassDeviceData.DevicePath sample [\\?\usb#vid_067b&pid_2507#6&14e622e5&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}]
if ( FunctionClassDeviceData.DevicePath[j] == '#' )
{
k++;
if ( k == 3 )
{
break;
}
Dir[p++] = '\\';
continue;
}
if ( k == 0 )
continue;
else if ( k <= 2 )
{//copy example [#vid_067b&pid_2507#6&14e622e5&0&2#]
Dir[p++] = FunctionClassDeviceData.DevicePath[j];
}
}
iXprintf("%s",Dir);
/* if ( (strstr(Dir,"2507") == NULL) && (strstr(Dir,"04B4") == NULL)
&& (strstr(Dir,"152D") == NULL))
continue;//not PL-2507, try next device
for ( q = 0; q < 4; q++ )
{//check repeat class id ( not the new one)
BNewValue = true;
if ( strcmp(Dir,USB[q].ClassID) == 0 )
{
BNewValue = false;
break;
}
}
if ( BNewValue )
{//new value, copy to array
strcpy(USB[Order].ClassID,Dir);
USB[Order].Len = strlen(USB[Order].ClassID);
break;
}*/
}
}
else
return false;
}//end for
if ( GetLastError()!=NO_ERROR &&
GetLastError()!=ERROR_NO_MORE_ITEMS )
{
// Insert error handling here.
return false ;
}
// Cleanup
SetupDiDestroyDeviceInfoList(hDevInfo);
return true;
gangliche
2009-10-29
打赏
举报
回复
可以枚舉所有USB VID/PID,選擇你要移除的drive.
EagleFew
2009-10-28
打赏
举报
回复
之前俺做过一个弹出U盘的小程序, 使用的ddk , 版本记不清楚了. 以前在2000下可以编译, 现在在xp下不能编译. 你枚举usb 设备的时候会有一个字符串名称"the mass storage"(大容量存储器) 判断这个就行了.
YeBinYe
2009-10-20
打赏
举报
回复
学习一下
hemiya
2009-10-20
打赏
举报
回复
标记,学习
gameloader
2009-10-20
打赏
举报
回复
mark
学习一下
Waiting4you
2009-10-20
打赏
举报
回复
我们公司的做法是删除U盘驱动,然后控制管理员权限(大部分人都没有这个权限,当然用其它手段得到的不算-_-)
zhgwbzhd
2009-10-20
打赏
举报
回复
我没有做到驱动那样。
我现在做的是样例。
先通过 SetupDiGetClassDevs 得到一个句柄。
在通过循环 SetupDiEnumDeviceInfo
通过CM_Get_DevNode_Status得到设备的状态。
如果该设备没问题。
就用
SetupDiGetDeviceRegistryProperty得到设备的参数。
用参数SPDRP_DEVICEDESC是就可以得到下面的信息
USB Root Hub
USB Root Hub
USB Root Hub
USB Root Hub
USB 人体学接口设备
禁止通过 StateChange实现。
如果把前4个都禁止了,鼠标也没了。
我怎能才能把U盘之类的和鼠标键盘之类的区别开来呢?
谢谢各位!
lghndyz
2009-10-20
打赏
举报
回复
这就得区分USB鼠标,键盘的dwIoControlCode控制码。驱动程序可以通过CTL_CODE宏来组合定义一个控制码,并在IRP_MJ_DEVICE_CONTROL的实现中进行控制码的操作。在驱动层,irpStack->Parameters.DeviceIoControl.IoControlCode表示了这个控制码。
屏蔽USB鼠标,键盘以外的dwIoControlCode控制码。
U盘
禁用
小精灵(
禁用
U盘
和移动硬盘)
C#.net开发的小工具,使用者电脑必须安装.net平台才可以使用。.net平台下载地址见:.NET Framework微软官方地址 http://download.microsoft.com/download/3/F/0/3F0A922C-F239-4B9B-9CB0-DF53621C57D9/dotnetfx3.exe 该软件可以让管理员方便的管理
USB
端口。一键即可
实现
启用与
禁用
U盘
。(不影响
USB
鼠标
,键盘及手写板的使用)。该软件适合公司
禁用
U盘
和移动硬盘,以防员工带走机密资料。 第一次使用,默认密码admin。 登录后直接点击对于按钮
禁用
或启用
U盘
即可。
禁用
后,插入的
U盘
将没有任何反应,
USB
接口的
鼠标
和键盘可以正常识别。 使用过程如有任何问题,请到www.piikee.net留言。
大势至
禁用
U盘
软件 完全屏蔽
U盘
禁用
USB
存储 而不影响
USB
鼠标
大势至
USB
端口监控软件是专业禁止
U盘
使用、屏蔽
USB
存储设备的软件,可以完全禁止
USB
存储设备的使用、
禁用
U盘
、移动硬盘和手机存储卡,同时还可以禁止蓝牙、
禁用
光驱、软驱、蓝牙,以及
禁用
随身wifi等,但不影响
USB
鼠标
键盘的使用。同时,还可以禁止修改注册表、限制组策略使用、禁止打开设备管理器等,可以全面保护电脑安全,防止员工反向修改重新启用
U盘
,是当前国内监控
USB
端口、屏蔽
U盘
最有效的电脑安全管理软件。此外,大势至
USB
监控软件操作极为简单,点点
鼠标
就可以完全使用,适合各层次网管员的需要。
禁用
U盘
关闭
USB
但
USB
鼠标
键盘可用
1.【禁止安装
USB
驱动程序】 在Windows资源管理器中,进入到“系统盘:\WINDOWS\inf”目录,找到名为“
Usb
stor.pnf”的文件, 右键“属性”,然后切换到“安全”标签页,在“组或用户名称”框中选中要禁止的用户组. 确定。
禁用
启用
U盘
,不影响
USB
鼠标
键盘 (注册表)
禁用
启用
U盘
,不影响
USB
鼠标
键盘 (注册表)
WorkWin
禁用
U盘
免费版 v1.1
软件介绍 为了保护电脑文件安全、切断
U盘
病毒的传播途径、防止电脑的
USB
接口随意插入
U盘
、移动硬盘等
USB
存储设备复制电脑文件的行为,我们需要
禁用
电脑U口。当前形势下,
禁用
u盘
也许是迫不得已的选择。 WorkWin
禁用
u盘
单机版适用于从Windows XP到Windows 10的各个版本操作系统,支持32位与64位Windows。WorkWin
禁用
u盘
不是通过注册表或者组策略来
禁用
USB
,而是在内存中实时动态拦截
u盘
等
USB
存储设备,可靠性高,程序是纯绿色版,运行时无需管理员权限,界面超级简单,告别繁琐的手动设置
禁用
U盘
,轻松
实现
一键勾选,立即
禁用
。 WorkWin
禁用
u盘
单机版支持
禁用
各类优盘、大容量移动硬盘,数码相机、各种存储卡、以及绝大多数的智能手机。在
禁用
u盘
时,并不影响
USB
鼠标
、键盘、打印机、扫描仪的
USB
设备的正常使用。如果单机版不能完全满足您的要求,需要更灵活的管理权限,可以使用WorkWin网络版。 版权说明:WorkWin
禁用
u盘
单机版永久免费,任何单位和个人可以以非盈利为目的无偿使用。任何单位和个人可以在未经南京网亚计算机有限公司授权情况下,自由传播分发本软件。传播时应保持本软件包的完整性。
Windows SDK/API
1,221
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章