usb在设备管理器中被禁用(包括鼠标和键盘),该怎么办

rxd237 2011-08-27 03:58:55
RT,键盘和鼠标都是usb的,而且没有ps2口来插键盘和鼠标,在不重装系统的情况下,如何将sub设备启用呢?3q
...全文
2044 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy951753 2011-09-02
  • 打赏
  • 举报
回复
键盘鼠标都不能用了,怎么修改注册表?怎么调用函数? 你还能做这些操作?????????
rxd237 2011-08-29
  • 打赏
  • 举报
回复
重装系统了
rxd237 2011-08-27
  • 打赏
  • 举报
回复
不知道对应注册表中的哪一项
[Quote=引用 4 楼 fangchao918628 的回复:]

这种禁止好像修改了注册表...可以试下通过PE系统,然后修改注册表的方法(只是猜测的没试验过....)
[/Quote]
fangchao918628 2011-08-27
  • 打赏
  • 举报
回复
这种禁止好像修改了注册表...可以试下通过PE系统,然后修改注册表的方法(只是猜测的没试验过....)

rxd237 2011-08-27
  • 打赏
  • 举报
回复
期待大虾现身
rxd237 2011-08-27
  • 打赏
  • 举报
回复
程序里调用
ControlDisk(0);实现的禁用
函数代码如下



BOOL ChangeStatus(DWORD NewStatus, DWORD SelectedItem, HDEVINFO hDevInfo)

{

CString msgstr;

HCURSOR hCursor = NULL;

SP_PROPCHANGE_PARAMS PropChanegeParams = {sizeof(SP_CLASSINSTALL_HEADER)};

SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};



hCursor = SetCursor(LoadCursor(NULL,IDC_WAIT));



//Get a handle to the selected Item

if(!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData))

{

msgstr.Format(_T("%d"),GetLastError());

AfxMessageBox(msgstr);

return false;

}

PropChanegeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;

PropChanegeParams.Scope = DICS_FLAG_GLOBAL;

PropChanegeParams.StateChange = NewStatus;



if(!SetupDiSetClassInstallParams(hDevInfo,&DeviceInfoData,(SP_CLASSINSTALL_HEADER *)&PropChanegeParams,sizeof(PropChanegeParams)))

{

msgstr.Format(_T("%d"),GetLastError());

AfxMessageBox(msgstr);

return false;

}

if(!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&DeviceInfoData))

{

msgstr.Format(_T("%d"),GetLastError());

AfxMessageBox(msgstr);

return false;

}



SetCursor(hCursor);

return true;



}



BOOL ControlDisk(int nStatus)

{

if(-1 == nStatus)

{

return false;

}



CString msgStr;



TCHAR * GUIDString = NULL;

GUID guid;

ZeroMemory(&guid,sizeof(GUID));



GUIDString = _T("36FC9E60-C465-11CF-8056-444553540000");

UuidFromString((unsigned short *)GUIDString,&guid);



HDEVINFO hDevInfo = SetupDiGetClassDevs(&guid,NULL,NULL,DIGCF_PRESENT);

if(INVALID_HANDLE_VALUE == hDevInfo)

{

msgStr.Format(_T("%d"),GetLastError());

AfxMessageBox(msgStr);

return false;

}



DWORD i;

SP_DEVINFO_DATA DeviceInfoData;

ZeroMemory(&DeviceInfoData,sizeof(SP_DEVINFO_DATA));

DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);



for(i = 0; SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);++i)

{

if(1 == nStatus)

{

ChangeStatus(DICS_ENABLE,i,hDevInfo);

}

else if(0==nStatus)

{

ChangeStatus(DICS_DISABLE,i,hDevInfo);

}

}

return SetupDiDestroyDeviceInfoList(hDevInfo);

}
rxd237 2011-08-27
  • 打赏
  • 举报
回复
今天没什么人呀?

2,302

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 电脑整机及配件
社区管理员
  • 电脑整机及配件社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧