转自:http://www.osdiy.com/Blog/article.asp?id=6
Windows系统中的自动运行相信很多人都有所了解,从光盘的自动运行到病毒的传播,很多地方都有它的身影,下面我们以Windows XP为例来详细解读这个东西。 Windows XP中和自动运行相关的地方有下面几个,第一:服务中的ShellHWDetection(Shell Hardware Detection) 这个服务从它的说明就能知道它的用途了:为自动播放硬件事件提供通知。 所以说自动运行都是从它开始的。如果把这个服务停掉下面就不用看了。呵呵第二:注册表中关于自动运行的键值。 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 下面的NoDriveTypeAutoRun(DWORD类型)控制自动播放的设备类型 0x04=DRIVE_REMOVEABLE (可移动磁盘,U盘) 0x08=DRIVE_FIXED(不可移动磁盘,比如硬盘) 0x10=DRIVE_REMOTE(网络磁盘) 0x20=DRIVE_CDROM(光盘) 0x40=DRIVE_RAMDISK(虚拟磁盘) 如果以上对应位为0则允许该类型设备自动允许,1为不允许 还有一个键值NoDriveAutoRun(DWORD类型),控制允许自动播放的盘符 其中每一位对应一个盘符,比如最低位对应A:,以此类推 第三:根目录下的Autorun.inf文件 前两个条件的自动运行都满足后Windows就会检查其根目录下的 Autorun.inf文件了,下面说说该文件的详细语法。 [AutoRun]小节下有如下设置 Icon=iconfilename[,index] (显示的图标,允许类型:ico/bmp/exe/dll) label=LabelText (定义的卷标,这个比盘符真正的卷标优先显示) open=[exepath\]exefile [param1 [param2] ...] shellexecute=[filepath\]filename[param1, [param2]...] 这两个功能就不用说了,区别在于Open指定的是可执行文件, 而shellexecute会让系统搜索文件关联来决定用什么程序打开。 Shell=MenuItem (默认的选择菜单) Shell\MenuItem=菜单提示 (选择该菜单执行下面定义的程序) Shell\MenuItem\Command=Filename.exe 下面这两个值仅Windows XP以上系统支持 action=字符串 (该字符串会显示在WinXP弹出的自动播放选择对话框中) UseAutoPlay=1 (如果没有这个或者=0,WinXP会弹出选择对话框) [DeviceInstall] DriverPath=驱动文件所在目录 (定义驱动搜索路径,WinXP以上支持) 以下小节仅Vista支持 [Content]下面指定该盘的内容,Windows会根据内容弹出不同的自动播放对话框 MusicFiles=Y (是音乐文件目录) PictureFiles=0 (是图片文件目录) VideoFiles=false (是视频文件目录) [ExclusiveContentPaths] (定义自动播放只搜索列出的目录中的内容) \music \music\more music [IgnoreContentPaths] (定义自动播放不要搜索下面列出的目录中的内容) \music \music\more music