AutoRun

便携式设备的自动播放

AutoRunAutoPlay微软窗口系统的组件,其内容标示着系统在搜索到设备时可采取的行动。

Windows 7 上“自动播放”的画面

AutoRun在Windows 95时首度露面,目的是帮助用户正确执行光碟上制作者想要执行的文件,另外AutoRun也能透过双击我的电脑内的设备图标启动AutoRun。但后来U盘病毒横行,微软发布更新关闭非光碟机的AutoRun。

Windows XP之后,微软让用户方便选择相关应用程式,制作出如图形化接口方式让用户选择如何处理设备中的文件。

请注意AutoPlay不等同于AutoRun。

AutoRun.inf的示例

编辑
[autorun] 
open=setup.exe 
icon=setup.exe,0
label=My install CD

意思就是在我的电脑双击光碟盘符时会执行setup.exe,而显示图标为setup.exe中第0个图标(即第1个图标),标签是My install CD

Windows的设备頪型

编辑

微软窗口系统中所定义的设备类型:[1]

设备类型 描述
DRIVE_UNKNOWN 无法识别的设备
DRIVE_REMOVABLE 可卸除式设备 (磁片、USB设备)
DRIVE_FIXED 无法移除的设备 (硬盘)
DRIVE_REMOTE 网络设备 (网上邻居)
DRIVE_CDROM 光碟设备
DRIVE_RAMDISK RAMDisk

AutoRun.inf的默认激活

编辑
  • 插入设备时启动。
  • 双击我的电脑设备时启动。
  • 对我的电脑设备点击右键菜单中 "AutoRun" 项目时启动。
  • 其他(如点击根目录文件夹)则不会启动。

Windows XP 以前

编辑
  • 所有设备都会依照 Autorun.inf 启动。

Windows XP SP0 到 SP2

编辑
  • DRIVE_CDROM 会先执行 autorun.inf ,若不存在则执行 AutoPlay。
  • DRIVE_REMOVABLE 执行 AutoPlay。另外由于一些问题,在我的电脑双击设备或右键设备则会启动 autorun.inf[2]
  • 其他设备都会依照 Autorun.inf 启动。

Windows XP SP2 到 SP3

编辑
  • DRIVE_CDROM 会先执行 autorun.inf ,若不存在则执行 AutoPlay。
  • DRIVE_REMOVABLEDRIVE_FIXED 执行 AutoPlay,但 AutoPlay 默认选项(即AutoPlay第一个选项)是由 autorun.inf 所定义。另外由于一些问题,在我的电脑双击设备或右键设备则会启动 autorun.inf[2]
  • 其他设备都会依照 Autorun.inf 启动。

Windows Vista

编辑
  • 在所有类型的驱动器中,AutoRun.inf不再自动默默地运行。所有的卷都是通过AutoPlay来处理:默认情况下,会弹出相应的对话框给用户。

Windows 7

编辑
  • DRIVE_CDROM 会先执行 autorun.inf ,若不存在则执行 AutoPlay。
  • 其他仅执行 AutoPlay ,而且 AutoRun.inf 并不会影响 AutoPlay 默认选项。
  • 即使修改 NoDriveTypeAutoRun 值也无效。

在2011年2月8日发布的安全公告KB967940中,微软对Windows自动运行功能进行了最新升级,限定Windows XP、Windows Server 2003、Vista和Windows Server 2008平台上的自动运行功能仅支持CD和DVD媒体。当用户使用包含autorun.inf文件的USB设备、网络共享或其它非CD/DVD媒体时,系统不会执行自动运行。安装此次更新后,当插入USB设备时,用户不会收到程序安装的提示对话框,用户需要手动打开文件夹找到安装文件,然后双击安装软件。不过,在连接至电脑时,有些USB的固件会让系统将其识别为CD,那么本次针对AutoRun的升级就对它们无效了。

win7中自动运行/自动播放功能唯一得以保留的地方是在光碟载体上。

AutoRun.inf的问题

编辑

著名的 kavo U盘病毒就是使用 autorun.inf 散播病毒,一旦电脑中了病毒之后就会对所有磁碟持续写入 autorun.inf ,让用户在别台电脑使用设备时也会中相关的病毒。

随着病毒的更新,其手法也日新月异,如图标使用跟文件夹一样的图标让用户难以分辨真假,进而造成安全性的威胁[3]

防止病毒利用 AutoRun

编辑

有鉴于网络上充斥着莫名其妙的解决方法,微软在2009年8月25日发布KB971029页面存档备份,存于互联网档案馆),关闭autorun.inf的影响,使相关功能变得跟Windows 7一样,在2011年2月微软正式放入在Microsoft Update中。

Windows 7以上的用户即使在设备中有病毒也不用担心相关问题,除非手动执行它。

AutoPlay的关闭

编辑

若不满意 AutoPlay 的功能可以使用下列方式关闭,但不会影响 AutoRun 功能,若要关闭 AutoRun 请遵循上方的指示。

若是 Windows XP 以前的用户请先修复 KB967715页面存档备份,存于互联网档案馆),Windows Vista 用户请修复 KB950582页面存档备份,存于互联网档案馆),接下来请安装Microsoft Fix it 50471[4]即可关闭。若要取消关闭,请安装Microsoft Fix it 50475

相关机码值

编辑
  • NoDriveTypeAutoRun
这是控制 AutoRun 的激活与否,其位置在于 HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\ ,可依表对想开启或关闭的设备控制。注意 HKLM 的优先权比 HKCU 来的大。这个动作也会影响 AutoPlay。
  • NoDriveAutoRun
这是控制 AutoRun 针对不同磁碟代号的激活与否,其位置在于 HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\ ,可依表对想开启或关闭的设备控制。注意 HKLM 的优先权比 HKCU 来的大。

在其它操作系统上的作用

编辑

GNOMENautilus中,autorun.inf中的icon项可以被识别。只要其指向一个正确的ico文件(Windows图标文件),Nautilus就可以将已挂载文件系统的图标替换成此图标。

引用资料

编辑
  1. ^ GetDriveType Function页面存档备份,存于互联网档案馆), 微软MSDN数据库
  2. ^ 2.0 2.1 如何在 Windows 中更正「停用自動執行登錄機碼」增強功能. [2011-09-06]. (原始内容存档于2015-03-03). 
  3. ^ File:Conficker worm AutoPlay Vista.png. [2011-09-06]. (原始内容存档于2011-12-18). 
  4. ^ 如何在 Windows 中更正“停用自动执行登录机码”增强功能页面存档备份,存于互联网档案馆),如何在 Windows 7 和其他操作系统中停用或激活所有自动执行功能