关于Autorun

一、AutoRun的基本原理
AutoRun是Microsoft Windows 操作系统的特点之一,它需要Windows 95和NT 4.0以上版本支持,用于基于Windows和DOS的应用程序,创建自动运行的应用程序需要建立两个文件,其中一个是AutoRun.inf,另一个为启动应用程序。
当设备(光盘)插入到一个支持AutoPlay的计算机中时,系统会检测插入设备上是否有有效的文件系统,如果有的话,它会搜索一个文件名为AutoRun.inf的配置文件,从这个文件找到安装程序和各种可选的配置,然后加载这个应用程序。
AutoRun.inf文件由若干节组成,下面是一个典型的AutoRun.inf文件,“;”及其后的语句为注释说明语句,建立文件时不要输入。
〔AutoRun〕
Open=MyDemo.exe
;启动程序的文件名,一般位于根目录,可以有路径,但不要带驱动器,因为各个微机的配置不一样,驱动器符不固定,注意你最好在这里加载一个小程序,以照顾一下不喜欢自动播放而且没有耐心等待的朋友,因为他们对付大的自动运行程序的第一反应是按下Ctrl+Alt+Del。为自动启动设计的程序,应该启动另外一个线程,以缩短用户感受的加载时间。对于已经安装的程序,启动程序应能自动检测环境是否安装,能够自动退出,避免重复安装造成用户不耐烦。
Icon=MyDemo.exe,1
;为驱动器指定一个应用程序的特定图标,这里的1为资源标识
DefaultIcon=iconFile.Ico
;指定应用程序的缺省图标。这两种指定图标的方法可以互换,即可以来自一个Exe或Dll文件内部资源,也可以是一个图标或位图文件。
Label=“My Drive Label”
;自动运行的驱动器显示标签,它显示在图标的下面。
ShellExecute=〔FilePath/〕fileName [Param1,[Param2]…]
;指定AutoPlay用来调用ShellExecuteEx的应用程序或数据文件,若文件名为一个可执行文件,它将被启动,若文件为数据文件,系统将调用ShellExecuteEx启动与该数据文件相关的缺省命令。这个命令与Open相似,但它可以利用文件的关联信息运行程序。
Shell=Explorer
;为驱动器的右击菜单指定一个缺省命令
Shell/ReadIt=”&ReadMe”;菜单上显示的字符串,你可以通过&定义菜单快捷键。
Shell/ReadIt/Command=”notepad abc/readme.txt “;菜单执行的命令
Shell/Explorer=“资源管理器”
Shell/Explorer/Command=Explorer.exe
后面这些语句用于对驱动器鼠标右击菜单进行定制。
二、禁止AutoRun
手工禁止AutoRun 比较简单,只需用户在插入光盘的同时,按下Shift键即可。但有的时候需要通过程序设计禁止自动运行。
对于Shell 4.7或更高版本的系统中,Microsoft  Windows  能够向前台应用程序窗口发送“QueryCancelAutoPlay”通过响应这条消息,你的应用程序可以禁止AutoRun。在应用程序的前台窗口的窗口过程中,应用程序在响应该消息时,应该返回TRUE,以示取消AutoPlay。
UINT g_uQueryCancelAutoPlay = 0;
LRESULT WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ switch (uMsg) {
...
default:
if (!g_uQueryCancelAutoPlay)
{
g_uQueryCancelAutoPlay =
RegisterWindowMessage(TEXT("QueryCancelAutoPlay“));
}
if (uMsg && uMsg == g_uQueryCancelAutoPlay)
{
return TRUE; // 取消AutoPlay
}
}
}
如果你的应用程序使用的是一个对话框,你还需要作一些额外的工作,即在返回TRUE之前,调用SetWindowLong(hDlg, DWL_MSGRESULT, TRUE);设置消息返回结果,TRUE表示禁止播放, FALSE,则允许自动播放。Return TRUE 此时不起作用,可以返回1。特别注意使用前要注册"QueryCancelAutoPlay“消息。
另外一种禁止AutoRun 的方法是通过修改注册编辑表:
有两种方法用于永远地禁止自动播放,控制面板中光盘的自动播放设置也是通过修改注册编辑表实现的。注册编辑表中有两个项专门负责自动播放禁止,它们是NoDriveAutoRun和NoDriveTypeAutoRun,前者规定某一指定驱动器盘符禁止自动播放;后者规定某一类特定设备禁止自动播放。
下面是注册编辑表导出的结果
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer]“NoDriveAutoRun”=hex:05,00,00,00

"NoDriveTypeAutoRun"=hex:91,00,00,00

在尝试修改的时候,建议用户把它原来存储的值记下来,因为没有更好的办法能够恢复它的原始值。NoDriveAutoRun值存储一个双字,从最低位到最高位依次对应A:、B:、C:,依次类推,上面的值将禁止A: ,C:。 NoDriveTypeAutoRun也存储一个双字,它的各位对应驱动器类型如下,注意Windows NT /2000系统重启或注销后重新登录方能生效:

位号 位屏蔽常量 描述
0x04 DRIVE_REMOVEABLE 对应软盘
0x08 DRIVE_FIXED 硬盘
0x10 DRIVE_REMOTE 网络驱动器
0x20 DRIVE_CDROM 光盘
0x40 DRIVE_RAMDISK Ram虚拟盘

三、其它存储设备的AutoRun
通过上面的描述可以看出,AutoRun不光支持光盘载体,同时它还支持其它载体,这使得AutoRun的调试非常方便。对于一个可移动存储载体,如USB移动存储器,AutoRun如果实现AutoRun.inf的加载必须满足下列条件:
(1)设备驱动必须兼容AutoRun驱动,即载体插入时必须向系统发送WM_DEVICECHANGE消息
(2)根目录下必须有一个有效的AutoRun.inf文件
(3)注册表不能禁止该设备的自动运行
(4)前台应用程序没有阻止AutoRun
注意这种方法不应该用来发布基于软盘的应用程序,因为实现软盘的自动运行会给病毒的传播提供一条有效的途径,用户会对任何含有AutoRun.inf文件的软盘保持怀疑。
AutoRun不仅可以手动禁止,也可以手工启动,你只需右击满足AutoRun条件的驱动器图标,选中AutoPlay项也可以激活AutoRun 命令。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Autorun是一种可在安卓手机上自动运行应用程序的功能。这个功能允许用户在手机启动时自动启动指定的应用程序。这对于那些需要经常使用某个应用程序的用户来说非常方便,因为他们不需要每次启动手机后手动打开该应用程序。 使用Android Autorun的过程非常简单。用户只需在手机上安装一个名为“应用启动管理器”的应用程序,然后在其中设置需要在启动时自动运行的应用程序。一旦用户将自己选择的应用程序添加到启动列表中,每次手机开机后该应用程序就会自动打开。用户还可以在任何时候编辑应用程序的启动列表,以满足自己的需求。 Android Autorun的好处是显而易见的。首先,它提供了便利,因为用户不需要每次打开手机时都手动启动某个应用程序。其次,对于那些需要经常使用某个应用程序的用户来说,这个功能能够节省他们的时间和精力。最后,Android Autorun还可以帮助用户控制自己的手机,确保只有用户真正需要的应用程序在启动时自动运行,从而提高手机的整体性能和效率。 然而,值得注意的是,使用Android Autorun功能时需要谨慎。如果用户设置了太多的自动运行应用程序,可能会导致手机的性能下降,并且在运行时会更耗费电量。因此,用户应该谨慎选择自动运行的应用程序,并根据自己的需求进行合理的设置。只启动真正需要的应用程序,避免过多的自动运行应用程序,是确保Android Autorun功能正常运行的关键。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值