ว่าจะเขียนมานานแล้ว พอดีวันนี้สบโอกาสเลยมาเขียนให้อ่านกัน
ไฟล์ autorun.inf เราเคยรู้จักไฟล์นี้ดีเวลาที่เราใส่ cd-rom ลงไปในไดรฟ์แล้วมันก็จะไปเรียกโปรแกรมขึ้นมาทำงานทันที แต่จริงๆ มันทำอะไรได้มากกว่านั้น ลองมาดูกัน
ข้อมูลนำมาจากที่นี่ครับ http://msdn2.microsoft.com/En-US/library/aa969327.aspx
หัวข้อหลักของ autorun จะเรียกว่า key ครับ โดย key จะเขียนเป็น [ชื่อคีย์] แบบนี้ ซึ่งคีย์ใน autorunจะมีดังนี้
* [AutoRun] Keys
* [Content] Keys
* [ExclusiveContentPaths] Keys
* [IgnoreContentPaths] Keys
* [DeviceInstall] Keys
มาดูส่วน AutoRun key ก่อน คำสั่งที่ใช้ได้ก็จะมีดังนี้
* action
* icon
* label
* open
* UseAutoPlay
* shellexecute
* shell
* shell\verb
ทีนี้มาดูวิธีใช้แต่ละคำสั่ง
คำสั่ง action ครับ
แบบที่ 1
โค๊ด:action=ActionTextแบบที่ 2
โค๊ด:action=@[filepath\]filename,-resourceID
คำอธิบาย
ActionText คือข้อความที่จะให้แสดงในหน้าจอ AutoPlay (บน WIndows XP ขึ้นไป) ซึ่งคำสั่งนี้จะไปเชื่อมโยงกับคำสั่ง open โดยอัตโนมัติ (หมายความว่า เวลาใส่แผ่นแล้วรันโปรแกรมทันทีเลย จะไม่มีอีกต่อไป จะต้องถามก่อน)
@[filepath\]filename คือชื่อไฟล์และพาธของไฟล์ binary ที่จะให้แสดงข้อความแทน action text
resourceID คือ resourceID ของข้อความที่อยู่ในไฟล์นั้น
หมายเหตุ
คำสั่ง action ใช้ได้กับ Windows XP sp2 หรือรุ่นถัดมาเท่านั้น มันใช้ได้กับ DRIVE_REMOVABLE และ DRIVE_FIXED เท่านั้น ถ้านำไปใช้กับไดรฟ์ cd หรือ dvd ที่เป็น audio หรือ movie คำสั่งนี้จะไม่สามารถใช้ได้ และคำสั่งนี้ใช้ไม่ได้กับ windows xp sp1 หรือรุ่นก่อนหน้านี้ มันจะไปทำตามคำสั่ง open เท่านั้น
คำสั่ง action นี้ จะแสดงในหน้าจอ Autoplay เวลาที่ใส่สื่อที่มีไฟล์นี้เข้าไปในเครื่อง (เช่น Thumb drive) โดยจะแสดงไอคอนที่ถูกกำหนดโดยคำสั่ง icon ไว้ด้วย และจะลิงค์คำสั่งไปที่คำสั่งที่ถูกกำหนดโดยคำสั่ง open หรือ shellexecute
เมื่อใส่คำสั่ง action เข้าไปในคีย์ autorun จะทำให้มันถูกเลือกเป็นตัวแรกอัตโนมัติ เวลาที่หน้าจอ autoplay แสดงขึ้นมา หากไม่ใช้คำสั่งนี้ เวลาใส่สื่อเข้ามาในเครื่อง หน้าจอ autoplay จะไม่แสดงคำสั่งของ open ที่กำหนดไว้เลย
คำสั่ง icon
โค๊ด:icon=iconfilename[,index]
iconfilename คือชื่อไฟล์ที่เก็บไอคอนไว้ครับ อาจจะใส่พาธด้วยก็ได้ เช่น \folder\to\icon.ico หรือถ้าไฟล์ไอคอนนั้นมีไอคอนหลายภาพ (เช่น อยู่ในไฟล์ icon.exe) ถ้าต้องการเลือกภาพไอคอนที่ไม่ใช่ไอคอนแรกก็ให้ใส่เลข index ลงไปด้วย ซึ่งเลข index ของไอคอนแรกมีค่าเท่ากับ 0
ตัวอย่าง
โค๊ด:icon=MyProg.exe,1
คำสั่ง label
โค๊ด:label=LabelText
คำสั่งนี้ใช้กำหนดชื่อไดรฟ์หรือแผ่น ซึ่งสามารถกำหนดได้มากถึง 32 ตัวอักษร อันแตกต่างจากชื่อไดรฟ์เดิมๆ ที่ได้แค่ 11 ตัวอักษรเท่านั้น และใช้ได้กับเครื่องที่เปิด autorun ไว้เท่านั้น หากปิด autorun ไว้ มันจะแสดงชื่อแผ่นหรือไดรฟ์จากแผ่นหรือไดรฟ์ที่กำหนดไว้ก่อนแล้วเท่านั้น
คำสั่ง open
โค๊ด:open=[exepath\]exefile [param1 [param2] ...]
คำสั่งนี้ใช้ในการระบุคำสั่งที่จะให้ทำงานอัตโนมัติเมื่อใส่ไดรฟ์หรือแผ่นเข้ามาในเครื่อง โดยถ้าเป็น windows รุ่นก่อน XP sp2 มันจะทำงานผ่านคำสั่งนี้อัตโนมัติ โดยไม่ถามก่อน หากเป็น sp2 มันจะขึ้นในหน้าจอ autoplay ถ้ากำหนดคำสั่ง action ไว้
คำสั่ง UseAutoPlay
โค๊ด:UseAutoPlay=1
คำสั่งนี้ได้รับการแนะนำให้ใช้ใน Windows XP จึงไม่มีผลต่อ windows รุ่นก่อนหน้านี้ สำหรับระบุว่าให้ใช้ UseAutoPlay V2 ถ้ามีการกำหนดคำสั่งนี้ไว้ มันถึงจะเรียกใช้คำสั่งที่กำหนดไว้โดย open หรือ ShellExecute ไว้ ถ้าใช้ ShellExecute ก็ขอให้ใช้ด้วยความระมัดระวังนะ หากไม่ได้กำหนดไว้ มันจะไปค้นหาข้อมูลในไดรฟ์ก่อนเรียก autoplay ขึ้นมา
คำสั่ง shellexecute
โค๊ด:shellexecute=[filepath\]filename[param1, [param2]...]
คำสั่งนี้ใช้ในการเรียกโปรแกรมขึ้นมาทำงานเช่นเดียวกับ open แต่แตกต่างที่สามารถกำหนดให้เรียกเปิดไฟล์เอกสารขึ้นมาได้ด้วย เช่น ให้ไปเปิดไฟล์ html ขึ้นมา มันก็จะไปเรียก browser สำหรับเปิดไฟล์ html ขึ้นมา โดยขึ้นอยู่กับว่าเราไปเซ็ตให้โปรแกรมไหนเป็นโปรแกรมเปิดไฟล์นั้น มันก็จะเปิดโปรแกรมนั้น
คำสั่ง shell
โค๊ด:shell=verb
คำสั่งนี้สำหรับกำหนดคำที่ใช้เรียกคำสั่งมาใช้อัตโนมัติ ซึ่งโดยปกติจะเป็นคำว่า autorun หากใส่คำสั่งนี้เข้าไป มันจะเปลี่ยนคำว่า autorun เป็นคำที่เราใส่ลงไปแทนคำว่า verb ครับ ซึ่งคำสั่งนี้มันจะไปอิงตามคำสั่ง shell\verb อีกที ซึ่งต้องระบุให้เมือนกัน
คำสั่ง shell\verb
โค๊ด:shell\verb\command=Filename.exe
shell\verb=MenuText
คำสั่งนี้ เป็นคำสั่งส่วนขยายจากคำสั่งข้างบน ซึ่งกำหนดให้ไปเรียกโปรแกรมตามที่เราต้องการ ส่วนบรรทัดล่างสำหรับให้แสดงข้อความในเมนูเวลาที่เราคลิกขวาที่ไดรฟ์
อันนี้มีตัวอย่าง
โค๊ด:shell\readit\command=notepad abc\readme.txt
shell\readit=Read &Me
คีย์ Content
โค๊ด:[Content]
MusicFiles=Y
PictureFiles=0
VideoFiles=false
จะมี 3 คำสั่ง ให้ใช้ สำหรับระบุว่ามีข้อมูลอะไรในไดรฟ์หรือแผ่น ซึ่งค่าของแต่ละคำสั่ง สามารถระบุว่าใช้ได้คือ 1, y, yes, t, true ส่วนใช้ไม่ได้คือ 0, n, no, f, false สำหรับคีย์นี้ใช้ได้กับ Windows Vista ขึ้นไป ส่วนรุ่นก่อนหน้าไม่มีผล คำสั่งนี้จะไปทำให้ windows ไม่ต้องค้นหาข้อมูลในไดรฟ์ก่อนที่จะนำขึ้นมาแสดงในหน้าจอ autoplay
คีย์ ExclusiveContentPaths
โค๊ด:[ExclusiveContentPaths]
\music
\music\more music
music2
ใช้สำหรับระบุว่ามีข้อมูลอยู่ในโฟลเดอร์ไหนบ้าง (จะได้ไม่เสียเวลาค้นหา) ซึ่งจะอิงกับคีย์ข้างบนครับ ว่าให้ใช้ content ชนิดไหนได้บ้าง ใช้ได้กับ vista ขึ้นไป
คีย์ IgnoreContentPaths
โค๊ด:[IgnoreContentPaths]
\music
\music\more music
music2
ใช้สำหรับระบุว่ามีโฟลเดอร์ไหนบ้างที่ไม่ให้ autoplay สนใจใฝ่ค้นหา
คีย์ DeviceInstall
โค๊ด:[DeviceInstall]
DriverPath=directorypath
ใช้สำหรับระบุว่าไดรเวอร์อยู่ที่ไหน ซึ่งจะเป็นการบังคับให้ตัว hardware wizard ไม่เสียเวลาในการค้นหาไดรเวอร์ทั้งไดรฟ์ คำสั่งนี้ใช้ได้ใน Windows XP เท่านั้น
อันนี้เป็นตัวอย่าง
โค๊ด:[DeviceInstall]
DriverPath=drivers\video
DriverPath=drivers\audio
ไม่คิดว่ามันจะเยอะขนาดนี้นะเนี่ย เพราะเห็นส่วนใหญ่ใช้แค่ open กะ icon เท่านั้นเอง....
