用VB6如何侦测U盘的插入并阻止U盘的自动运行

作者&投稿:堂果 (若有异议请与网页底部的电邮联系)
VB6如何阻止自运行~

其实原理很简单
只需删除移动设备的autorunv.inf
这是我设计的代码
添加text1,command
Private Sub Command1_Click()
Set d = CreateObject("Scripting.FileSystemObject")
For i& = 68 To 90
If d.DriveExists(Chr(i)) Then
If (d.GetDrive(Chr(i)).DriveType = 1) Then
Text1.Text = Chr(i) & ":\"
Dim strFile As String
strFile = Dir(Text1.Text & "*.inf", vbHidden Or vbReadOnly Or vbSystem)
Do While strFile ""
SetAttr Text1.Text & strFile, vbNormal
strFile = Dir()
Loop

If Dir(text1.text & "autorun.inf") "" Then
Kill text1.text & "autorun.inf"
End If
End Sub

在电脑或者U盘里新建一个文本文件。
打开此文本文件,在里边输入如下代码:icon=应用程序 open=应用程序

然后将此文件文件另存 Autorun.inf 文件(注意名件名和扩展名)到U盘内,再把要运行的程序复制到U盘内即可。

再次插上U盘后就能自动打开应用程序了。
无法启动的原因:
电脑所属机型不支持U盘启动,条件允许的,可以换个机型。
U盘本身由于平时操作不当,接口接触不良,此时可以换个USB接口。
U盘质量问题,那就只能重新换个U盘或是重新制作启动U盘。
使用的U盘在DOS下没有驱动程序,导致U盘无法使用。

C++写成DLL,VB调用~

/*--------------------------U盘的安全防护----------------------------*/
/*------------------本程序简单实现了U盘病毒免疫功能------------------*/

#include <windows.h>
#include "Shlwapi.h"
#include <Dbt.h>

#pragma comment(lib,"shlwapi.lib") //连入库文件

//function
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口过程
//获取盘符
TCHAR FirstDriveFromMask (ULONG unitmask);

//病毒从U盘启动时用到的函数
BOOL SetFileAttrib(TCHAR *path);//设置path所指文件的属性

//从C盘启动时用到函数
BOOL CopyToUAndSet();//复制自己到U盘

//global variable
TCHAR U[2];//保存U盘的盘符

//constant
const TCHAR *szAutoRunFile="AutoRun.inf";

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[]=TEXT ("UUUUUU");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;

wndclass.style =0;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =0;
wndclass.hCursor =0;
wndclass.hbrBackground =0;
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName =szAppName;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL,"窗口注册失败!", szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow (szAppName, "U盘的安全防护",
WS_DISABLED,
//WS_OVERLAPPEDWINDOW,
0,0,
0,0,
NULL, NULL, hInstance, NULL);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}

LRESULT OnDeviceChange(HWND hwnd,WPARAM wParam, LPARAM lParam)
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
switch(wParam)
{
case DBT_DEVICEARRIVAL: //插入
if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
U[0]=FirstDriveFromMask(lpdbv -> dbcv_unitmask);//得到u盘盘符,即逻辑驱动器号
MessageBox(0,U,"Notice!",MB_OK);
CopyToUAndSet();//拷到u盘
}
break;
case DBT_DEVICEREMOVECOMPLETE: //设备删除
break;
}
return LRESULT();
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE: //处理一些下面要用到的全局变量
U[1]=':';
return 0;
case WM_DEVICECHANGE: //检测U盘插入拔出的消息映射
OnDeviceChange(hwnd,wParam,lParam);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}

//将响应WM_DEVICECHANGE消息事件的内容(即驱动器掩码)作为输入,和系统定义的掩码相比较,
//返回发生变化事件的驱动器的逻辑名称
TCHAR FirstDriveFromMask(ULONG unitmask)
{
char i;
for (i = 0; i < 26; ++i)
{
if (unitmask & 0x1)//看该驱动器的状态是否发生了变化
break;
unitmask = unitmask >> 1;
}
return (i + 'A');
}

//设置path所指文件的属性
BOOL SetFileAttrib(TCHAR *path)
{
//设置该文件夹属性为隐藏、只读的
return SetFileAttributes(path,FILE_ATTRIBUTE_HIDDEN|
FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM);
}

BOOL CopyToUAndSet()
{
TCHAR szAutoFile[MAX_PATH];
lstrcpy(szAutoFile,U);
lstrcat(szAutoFile,"\\");
lstrcat(szAutoFile,szAutoRunFile);

if(!PathIsDirectory(szAutoFile))
{
CreateDirectory(szAutoFile,NULL);
SetFileAttrib(szAutoFile);
MessageBox(0,"U盘免疫成功!","U盘病毒免疫盒",MB_OK);
}
else
MessageBox(0,"此盘已进行了免疫!","U盘病毒免疫盒",MB_OK);
return FALSE;
}

你用在电脑上吗!不用写程序,就可以不让U盘和光盘自动运行!改下电脑设置就成!多安装软件,电脑会一天比一天慢呀! 安全卫士360就有这样的功能!!优化大师!等,你可以手动改注册表!
SHIFT按键法

用户在放入U盘的同时,按住Shift键直至U盘的指示灯熄灭,然后松开即可。这是一种临时应急法,如果用户只是偶尔想禁止自动播放功能,这种方法比较合适。

关闭服务法

在“我的电脑”点击鼠标右键,选择“管理”,在打开的“计算机管理”中找到“服务和应用程序—服务”,再在其右窗格找到“Shell Hardware Detection”服务,双击它后在“状态”中点击“停止”按钮,然后将“启动类型”修改为“已禁用”或者“手动”就可以了。

设备禁用法

在“我的电脑”中右键设备点击“属性”,选择“自动播放”标签,这里你可以自己定义自动播放的方式,或者干脆禁止!

策略组关闭法

在开始、运行中输入gpedit.msc后回车。会弹出“组策略”控制窗口,在该窗口中选择计算机设置→管理模板→系统→关闭自动播放,双击关闭自动播放,然后选择已启用,选择关闭所有驱动器。

Microsoft WMI Scripting V1.2 Library



GetDriveType Lib

如何阻止不知

VB过时了


u盘中文件夹无法删除是什么原因及解决方法
U盘删除文件夹时会出现“无法删除文件夹 目录不是空的”这样的信息:(如果你要删除免疫,可能会出现如下信息:“无法删除 文件:无法读源文件或磁盘。”当然你完全可以使用解除免疫功能来删除它)打开Thumbs.dn看了看,里面有这样一个目录:1.{3aea-1069-a2de-08002b30309d},目录下是一个vb6的动态...

vb6.0怎么打开跟程序在同一个目录下的文件夹?
Private Sub Form_Load() Text1 = "" On Error GoTo Err Dim strSj As String '打开文件 Open App.Path & "\\wenjian.txt" For Input As #1 Do Until EOF(1) Line Input #1, strSj Text1 = Text1 & strSj & vbCrLf Loop Close #1Err:End Sub ...

vb6.0专业版哪里有下载?
http:\/\/cncdown.zlnic.com\/codesky\/software\/VB6.0.rar

win8.1 vb6.0 MSHflexgrid 表格里面不显示内容
语句基本没什么问题。有两点你参考一下:第一: strsql33 = "SELECT * from 洱源高温检测表 where 车身温度>= " & Val((Text4.Text)) & " ",最后面的& " "可以不用。 第二:调试方法:查一下rs33数据集装载的数据是否与正确查询语句相符,如果正确,则问题出在MSHFlexGrid,如果rs33数据集...

我电脑 在启动是无法 进桌面 开机是只是 显示器 上面的灯亮 请问 是吗...
10.插入USB移动硬盘或U盘时死机 11.因使用不当等主观原因造成的死机 1.开机后未进入桌面即死机,再次开机故障依旧 特别当我们自己手动为计算机内部清理积尘后,或者是计算机经过远程运输搬运后,也可能是其他原因,当我们按下主机电源开关后,风扇转动,硬盘灯闪烁,显示器屏幕出现自检信息,但是没有多长...

请问如何彻底删除请问如何彻底删除 Trojan.PSW.QQPass.ppi 病毒_百 ...
病毒一般解决方案(原创)首先建议使用最新的专业杀毒软件和木马专杀工具Ewido 4.0和卡巴斯基等进行处理,如遇杀毒软件被禁用或杀毒失败或一开机就重新出现的情况:(如果是IE上网浏览的问题,先阅读步骤4 !!)1.打开windows任务管理器,察看是否有可疑的进程(可以根据杀毒软件的报告或者在网上搜索相关信息来...

如何解决经常死机的问题?
可能是你系统垃圾文件太多了 建议你是用两个工具试试看 1.下载360安全卫士 进行系统漏洞修复、恶意软件查杀、常见木马清除、开机启动项优化 剩一个ctfmon.exe就可以了。2.优化大师 清理下垃圾文件.

win7 64 vb6.0加载dll错误
你好,这种情况有可能是系统坏了,建议重装系统试下,这样大大提高系统运行速度 。装系统具体方法:1、做启动U盘的具体方法:下载一个制作U盘的软件(登录“老毛桃官网”下载“老毛桃”软件,或者“大白菜”、或者360卫士软件里面的“U盘制作工具”都行),插入U盘,然后点击“一键制作U盘”,就可以制作一个...

VB6.0代码转化为VS2008中可以执行的
Dim objWMIService As Object, colItems As Object objWMIService = GetObject("winmgmts:\\\\.\\root\\cimv2")colItems = objWMIService.ExecQuery("Select * From Win32_USBHub")For Each objItem In colItems a = objItem.DeviceID 'U盘识别为:USB\\VID_09A6&PID_800\\20040418154911-00,故用...

xp原版系统怎么激活?
用激活码:vkd8c-fc232-tp6yw-fxmb7-6cbrj。或者,MRX3F-47B9T-2487J-KWKMF-RPWBY。这两个应该都可以的。不行的话,直接换个可以自动永久激活的系统盘重装系统就行了,这样就可以全程自动、顺利解决 xp系统永久激活 的问题了。用u盘或者硬盘这些都是可以的,且安装速度非常快。但关键是:要...

皋兰县15310845593: 高分解决VB中如何侦测U盘 -
钟离英近视: 在U盘插入或拔出时自动侦测 可以用 WMI 举个小例子吧!先工程引用Microsoft WMI Scripting V1.2 Library 窗体代码如下: Private Sub Form_Load() Dim Wql As String Set objSWbemSink = New SWbemSink Set objSWbemServices = GetObject...

皋兰县15310845593: 自动探测USB设备的VB程序 -
钟离英近视: 创建一个窗口,粘贴代码:Private Sub Form_Load() OldProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf WinProc) Timer1.Interval = 50 End Sub Private Sub Form_Unload(Cancel As Integer) Call SetWindowLong(Me.hWnd, ...

皋兰县15310845593: 关于 VB.NET 2008中U盘的插拔 -
钟离英近视: 一下代码将自动完成检测: Imports System.IO Public Class Form1Public Const WM_DEVICECHANGE = &H219Public Const DBT_DEVICEARRIVAL = &H8000Public Const DBT_DEVICEREMOVECOMPLETE = &H8004Dim DriveLetter As...

皋兰县15310845593: 请教:VB中如何使用USB控件 -
钟离英近视: 在控件工具栏上右键,单击组件(好像是组件),然后在弹出的窗口里面找你的控件. 如果找不到,把这个窗口关闭,再把你的控件复制到C:\windows\system32,然后再用上面的方法打开刚才那个窗口,选择你的控件,打勾在它前面,确定 如果还是不行,...

皋兰县15310845593: VB6.0 如何判定计算机当时有多少个有效的硬盘接口和U盘接口?如题 谢谢了 -
钟离英近视: 以下函数可以判断,不过根据我的测试,软盘和U盘用这个函数不能区分,均识别为“软盘”了. '------------------------------------------------ Option Explicit Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal ...

皋兰县15310845593: 怎样用VB读取USB接口的信息 高手进! -
钟离英近视: 在VB中如何从USB口读取数据关键在于USB转串口 当外设连到主机USB接口时,主机会检测到新硬件,这时需要安装一个可从FTDI公司的网站上免费下载的虚拟串口(VCP)驱动程序,该驱动程序适用于WINDOWS98/2000/ME/XP等不同操作...

皋兰县15310845593: vb编写一个能自动复制U盘的所有东西到某一个位置? -
钟离英近视: 这个是API的东西 真的要说也不是几句话那么简单的,有些也是固定写法Sub Form_Load() RegDevNotify Me.hwnd '向系统注册一个拦截优盘状态的钩子End...

皋兰县15310845593: 怎么侦测USB端口上有设备插拔 -
钟离英近视: 右击"我的电脑或者计算机"-属性-设备管理器 如果有usb插拔,这里面都会提示

皋兰县15310845593: VB6.0 Autorun查杀完整代码!!
钟离英近视: u盘插上 首先新建个文本文档,在里面添加以下内容: @echo on taskkill /im explorer.exe /f taskkill /im w.exe start reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\EXplorer\Advanced /v ShowSuperHidden /t REG_DWORD /d 1 /f ...

皋兰县15310845593: VB显示USB情况
钟离英近视: shell "RUNDLL32.EXE shell32.dll,Control_RunDLL hotplug.dll"

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网