如果你直接双击system.txt,你会看到的确是直接用记事本来打开的。这种情况下,系统根据txt文件的文件关联,实际执行的命令行参数是"notepad.exe C:\WINDOWS\system.txt",也就是运行记事本程序,并把system.txt的路径当成参数传递给它。
而对于服务执行来说,ImagePath的内容,就是让系统直接执行的命令行参数,所以系统启动服务时,不会先检测对应文件的文件关联,而是直接把文件当成可执行程序载入。
而当把文件当成可执行程序载入时,就如楼上两位所说:系统执行此文件时,不是依照其后缀名,而是通过读取文件的PE头结构,来确定文件属性,进而使用合适的加载方式。
这也就解释了,为什么把SREng后缀改成.com,.scr,甚至.bat,都能够正常执行。
正常软件可以利用这种性质,而更多地被病毒所利用。如灰鸽子的对应文件可以完全没有后缀名,或用其他非exe的后缀名,但实际上系统启动灰鸽子的服务时,仍然把它当exe来载入。