QQ登录

只需一步,快速开始

380上位机VC MFC通过注册表禁用与使用U盘

[ 复制链接 ]

380上位机VC MFC通过注册表禁用与使用U盘

380上位机VC MFC通过注册表禁用与使用U盘

禁用与使用U盘
功能展示
U盘是传播病毒的常见途径,如果设备的核心控制部分-工控机被病毒感染,那就会引起经济上的损失同时也给我们程序工程师造成工作上的麻烦,所以在工控机投入生产后,封死U盘等病毒传播途径就是我们程序员要解决的事。我们当前例程通过注册实现U盘的禁用与使用功能,效果如图,点击<禁止使用U盘>例程会修改注册表禁用U盘,U盘插入电脑都不能操作,点击<允许使用U盘>u盘插入后可以正常使用

要点提示
当前例程主要是通过悠注册表三个指定键下的Start键值项实现U盘的禁用与使用的。分别修改HKEY_LOCAL_MACHINE下 SYSTEM\\CurrentControlSet\\services\\USBSTOR的键值项“Start”的值为4
HKEY_LOCAL_MACHINE下 SYSTEM\\ControlSet001\\services\\USBSTOR的键值项“Start”的值为4
HKEY_LOCAL_MACHINE下 SYSTEM\\ControlSet002\\services\\USBSTOR的键值项“Start”的值为4
就可以禁用U般,同时将三个位置的Start值修改为3表示可以使用U盘;

在修改时会遇到访问权限及修改权限的困扰,例程也一一解决:访问权限可以通过载入例程根目录文件gkbc8_com.manifest到工程中,类型修改为24,ID修改为1;修改权限可调用例程的函数SetRegPrivilege()修改指定SAM主键的DACL ;

另外要更完美的实现禁用,可以禁止U盘驱动的安装,也就是删除或重命名系统文件夹C:?\\windows\\inf下usbstor . inf和usbstor . pnf两个文件(有的电脑可能是usbstor和usbstor . pnf)

实现功能
1.新建基于对话框的应用程序
2.添加两个按钮<禁止使用U盘><允许使用U盘>关联按钮的点击函数,实现U盘的禁用与使用
void CGkbc8Dlg::OnDisallow()
{
if(!SetRegValue(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\services\\USBSTOR","Start",4) )
{
MessageBox("关闭CurrentControlSet 过程出错");
return;
}
if(!SetRegValue(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\services\\USBSTOR","Start",4) )
{
MessageBox("关闭ControlSet001 过程出错");
return;
}
if(!SetRegValue(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet002\\services\\USBSTOR","Start",4) )
{
MessageBox("关闭ControlSet002 过程出错");
return;
}
MessageBox("已成功禁用U盘");
}
void CGkbc8Dlg::OnAllow()
{
if(!SetRegValue(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\services\\USBSTOR","Start",3) )
MessageBox("打开 CurrentControlSet 过程出错");
if(!SetRegValue(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\services\\USBSTOR","Start",3 ) )
MessageBox("打开 ControlSet001 过程出错");
if(!SetRegValue(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet002\\services\\USBSTOR","Start",3) )
MessageBox("打开 ControlSet002 过程出错");
}
3.按钮中调用了自定义函数BOOL SetRegValue(HKEY hRootKey,CString sSubKey,CString sValueName,DWORD dwData);,这一自定义函数又调用了另一提权函数,所以再添加这两函数,及添加函数所需要的头文件#include <Aclapi.h> #pragma comment (lib,"Advapi32.lib")
BOOL CGkbc8Dlg::SetRegValue(HKEY hRootKey,CString sSubKey,CString sValueName, DWORD dwData)
{
//<>
HKEY hSubKey;
int nResult;
nResult = RegOpenKeyEx(hRootKey,sSubKey,0,KEY_ALL_ACCESS,&hSubKey);
if(nResult != ERROR_SUCCESS)
return FALSE;

DWORD dwDataSize = 4;
nResult = RegSetValueEx(hSubKey,sValueName,0,REG_DWORD,(const unsigned char *)&dwData,dwDataSize);
if(nResult != ERROR_SUCCESS)
{
CString sSAMPath;
if(hRootKey == HKEY_LOCAL_MACHINE)
sSAMPath = "MACHINE\\"+sSubKey;
if(SetRegPrivilege(sSAMPath) )//设置操作子键全权限成功后再写一次
{
nResult = RegSetValueEx(hSubKey,sValueName,0,REG_DWORD,(const unsigned char *)&dwData,dwDataSize);
if(nResult != ERROR_SUCCESS)
{
RegCloseKey(hSubKey);
return FALSE;
}
RegCloseKey(hSubKey);
return TRUE;
}
else
{
RegCloseKey(hSubKey);
return FALSE;
}
}
RegCloseKey(hSubKey);
return TRUE;
}
在打开注册表会出现拒绝访问问题,将例程以管理员身份运行就可,或按例程载入gkbc8_com.manifest获权
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:380.上位机VC MFC通过注册表禁用与使用U盘.zip 
文件大小:121.62 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索