如何用程序禁用光驱,串口,并口,USB,请各位大侠帮忙 是修改注册表还是用其他的技术,请大侠帮忙,非常感谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用C#控制中断还不如在Bios里设置。 估计必须要修改注册表,可以将光驱隐藏起来的,不过这不能起到作用,你找找win32的api看有没有方法能够实现,我感觉应该有的 谢谢,不过好想WMI,搞不定,而注册表好像也行不通 WMI搞不定,注册表好像也不行,请高手提供一个方法 用注册表绝对是可以禁光驱与USB的,串口与并口没有试过,我估计也是可以的 xupc(寻巢鸟) ( ) 信誉:97 2006-06-02 15:15:00 得分: 0 用注册表绝对是可以禁光驱与USB的,串口与并口没有试过,我估计也是可以的 请告诉我修改哪个键值 注册表似乎必须重新登陆一次才能生效。键值有两个,一个是NoDriver,一个是NoViewOnDriver,似乎。 光驱:注册表项HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\ Policies\Explorer,新建DWORD值NoDrives,并将键值改为40(假设光驱是G盘),然后关闭注册表编辑器,重新启动电脑,就会把光驱隐藏起来,其他人在Windows下就无法使用了。 下面代码可以禁用启用系统中的设备,这个程序是列举出所有的光驱,让用户选择然后进行禁用和启用,因为界面中使用了列表控件控制列举和选择设备,所以直接复制这段代码可能不好用,你可以研究一下。ControlPower函数的第一个参数为0禁用,为1启用。效果和在设备管理器中的操作一样这是在C++下的代码,将函数封成Dll在C#下调用就可以了。void FormatMSG(DWORD dwError,LPTSTR *lpszMsg){ BOOL bOK = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER,NULL,dwError,MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),(LPTSTR)lpszMsg,0,NULL); if (!bOK) { HMODULE hDll = LoadLibraryEx(_T("netmsg.dll"),NULL,DONT_RESOLVE_DLL_REFERENCES); if (NULL != hDll) { FormatMessage(FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_FROM_SYSTEM,hDll,dwError,MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),(LPTSTR)lpszMsg,0,NULL); FreeLibrary(hDll); } }}BOOL ChangeStatus(DWORD NewStatus,DWORD SelectedItem,HDEVINFO hDevInfo){ LPTSTR lpszMsg = NULL; HCURSOR hCursor = NULL; try { SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof(SP_CLASSINSTALL_HEADER)}; SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)}; hCursor = SetCursor(LoadCursor(NULL,IDC_WAIT)); if (!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData)) { FormatMSG(GetLastError(),&lpszMsg); throw lpszMsg; } PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE; PropChangeParams.Scope = DICS_FLAG_GLOBAL; PropChangeParams.StateChange = NewStatus; if(!SetupDiSetClassInstallParams(hDevInfo,&DeviceInfoData,(SP_CLASSINSTALL_HEADER *)&PropChangeParams,sizeof(PropChangeParams))) { FormatMSG(GetLastError(),&lpszMsg); throw lpszMsg; } if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&DeviceInfoData)) { FormatMSG(GetLastError(), &lpszMsg); throw lpszMsg; } SetCursor(hCursor); return TRUE; } catch(TCHAR *pszError) { SetCursor(hCursor); ::MessageBox(NULL,pszError,_T("提示"),MB_OK); if(NULL != lpszMsg) { LocalFree((HLOCAL)lpszMsg); } return FALSE; }}BOOL ControlPower(int nStatus,CString devicename){ if (-1 == nStatus) { return FALSE; } LPTSTR lpszMsg = NULL; try { TCHAR *GUIDString = NULL; GUID guid; ZeroMemory(&guid,sizeof(GUID)); GUIDString = _T("4D36E965-E325-11CE-BFC1-08002BE10318"); UuidFromString((unsigned char *)GUIDString,&guid); hDevInfo = SetupDiGetClassDevs(&guid,NULL,NULL,DIGCF_PRESENT); if(INVALID_HANDLE_VALUE == hDevInfo) { FormatMSG(GetLastError(),&lpszMsg); throw lpszMsg; } DWORD i; SP_DEVINFO_DATA DeviceInfoData; ZeroMemory(&DeviceInfoData,sizeof(SP_DEVINFO_DATA)); DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); CHAR deviceid[1024]; for (i = 0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);++i) { SetupDiGetDeviceInstanceId(hDevInfo,&DeviceInfoData,deviceid,1024,NULL); if (deviceid == devicename) { if(1 == nStatus) { ChangeStatus(DICS_ENABLE,i,hDevInfo); } else if(0 == nStatus) { ChangeStatus(DICS_DISABLE, i, hDevInfo); } } } return SetupDiDestroyDeviceInfoList(hDevInfo); } catch(TCHAR *pszError) { ::MessageBox(NULL,pszError,_T("提示"),MB_OK); if(NULL != lpszMsg) { LocalFree((HLOCAL)lpszMsg); } return FALSE; } return FALSE;} mysql登录验证, 谁做过医保接口的请进贴 C#反射问题:未能从程序集“……”中加载类型“……” 如何批量更新datatable中的数据? winform 多线程问题 求C#练习题 为什么Winform中label控件的值不能随着程序的运行改变???? (高分)从工具箱的选项卡里面往COM组件里面添加一个DLL,为什么会添加不成功 在哪能查到关于OFFICE操作的文档? 提取网页的纯文本 XML+C# 怎么实现asp.net程序与C#桌面程序互动(100分)????? 关于C#中如何实现图片的缩略显示?
串口与并口没有试过,我估计也是可以的
用注册表绝对是可以禁光驱与USB的,
串口与并口没有试过,我估计也是可以的
请告诉我修改哪个键值
注册表项HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\ Policies\Explorer,新建DWORD值NoDrives,并将键值改为40(假设光驱是G盘),然后关闭注册表编辑器,重新启动电脑,就会把光驱隐藏起来,其他人在Windows下就无法使用了。
ControlPower函数的第一个参数为0禁用,为1启用。
效果和在设备管理器中的操作一样
这是在C++下的代码,将函数封成Dll在C#下调用就可以了。
void FormatMSG(DWORD dwError,LPTSTR *lpszMsg)
{
BOOL bOK = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER,NULL,dwError,MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),(LPTSTR)lpszMsg,0,NULL);
if (!bOK)
{
HMODULE hDll = LoadLibraryEx(_T("netmsg.dll"),NULL,DONT_RESOLVE_DLL_REFERENCES);
if (NULL != hDll)
{
FormatMessage(FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_FROM_SYSTEM,hDll,dwError,MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),(LPTSTR)lpszMsg,0,NULL);
FreeLibrary(hDll);
}
}
}BOOL ChangeStatus(DWORD NewStatus,DWORD SelectedItem,HDEVINFO hDevInfo)
{
LPTSTR lpszMsg = NULL;
HCURSOR hCursor = NULL;
try
{
SP_PROPCHANGE_PARAMS PropChangeParams = {sizeof(SP_CLASSINSTALL_HEADER)};
SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
hCursor = SetCursor(LoadCursor(NULL,IDC_WAIT));
if (!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData))
{
FormatMSG(GetLastError(),&lpszMsg);
throw lpszMsg;
}
PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
PropChangeParams.Scope = DICS_FLAG_GLOBAL;
PropChangeParams.StateChange = NewStatus;
if(!SetupDiSetClassInstallParams(hDevInfo,&DeviceInfoData,(SP_CLASSINSTALL_HEADER *)&PropChangeParams,sizeof(PropChangeParams)))
{
FormatMSG(GetLastError(),&lpszMsg);
throw lpszMsg;
}
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&DeviceInfoData))
{
FormatMSG(GetLastError(), &lpszMsg);
throw lpszMsg;
}
SetCursor(hCursor);
return TRUE;
}
catch(TCHAR *pszError)
{
SetCursor(hCursor);
::MessageBox(NULL,pszError,_T("提示"),MB_OK);
if(NULL != lpszMsg)
{
LocalFree((HLOCAL)lpszMsg);
}
return FALSE;
}
}
BOOL ControlPower(int nStatus,CString devicename)
{
if (-1 == nStatus)
{
return FALSE;
}
LPTSTR lpszMsg = NULL;
try
{
TCHAR *GUIDString = NULL;
GUID guid;
ZeroMemory(&guid,sizeof(GUID));
GUIDString = _T("4D36E965-E325-11CE-BFC1-08002BE10318");
UuidFromString((unsigned char *)GUIDString,&guid);
hDevInfo = SetupDiGetClassDevs(&guid,NULL,NULL,DIGCF_PRESENT);
if(INVALID_HANDLE_VALUE == hDevInfo)
{
FormatMSG(GetLastError(),&lpszMsg);
throw lpszMsg;
}
DWORD i;
SP_DEVINFO_DATA DeviceInfoData;
ZeroMemory(&DeviceInfoData,sizeof(SP_DEVINFO_DATA));
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
CHAR deviceid[1024];
for (i = 0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);++i)
{
SetupDiGetDeviceInstanceId(hDevInfo,&DeviceInfoData,deviceid,1024,NULL);
if (deviceid == devicename)
{
if(1 == nStatus)
{
ChangeStatus(DICS_ENABLE,i,hDevInfo);
}
else if(0 == nStatus)
{
ChangeStatus(DICS_DISABLE, i, hDevInfo);
}
}
}
return SetupDiDestroyDeviceInfoList(hDevInfo);
}
catch(TCHAR *pszError)
{
::MessageBox(NULL,pszError,_T("提示"),MB_OK);
if(NULL != lpszMsg)
{
LocalFree((HLOCAL)lpszMsg);
}
return FALSE;
}
return FALSE;
}