การเขียนสคริปต์ตัวอย่างในบทความนี้แสดงให้เห็นถึงวิธีการเพิ่มคีย์รีจิสทรีของระบบ เซิร์ฟเวอร์ COM ของนายทะเบียน การลงทะเบียน และระบุต้นไม้ในการแยกวิเคราะห์หลาย?
ต้นไม้ในการแยกวิเคราะห์ดังต่อไปนี้แสดงให้เห็นถึงสคริปต์ง่าย ๆ ที่เพิ่มแป้นเดียวกับรีจิสทรีของระบบ โดยเฉพาะอย่างยิ่ง สคริปต์เพิ่มปุ่ม MyVeryOwnKey
ถึง HKEY_CURRENT_USER
กำหนดค่าสายอักขระเริ่มต้นของ HowGoesIt?
คีย์ใหม่:
HKEY_CURRENT_USER
{
nbsp 'MyVeryOwnKey' = s 'HowGoesIt
}(&N)
สคริปต์นี้สามารถขยายได้อย่างง่ายดายเพื่อกำหนดคีย์ย่อยหลายเป็นดังนี้:
HKCU
{
nbsp 'MyVeryOwnKey' = s 'HowGoesIt
{
'HasASubkey'
{
'PrettyCool' = d '55'
val 'ANameValue' = 'WithANamedValue' s
}
}
}(&N)
ขณะนี้ สคริปต์การเพิ่มคีย์ย่อย HasASubkey
ถึง MyVeryOwnKey
เพิ่มคีย์ย่อยนี้ จะลงทั้งสอง PrettyCool?
คีย์ (พร้อมค่าDWORDเริ่มต้นของ 55) และ ANameValue
ชื่อค่า (พร้อมค่าสายอักขระWithANamedValue)
?
สคริปต์ต่อไปนี้ลงทะเบียนเซิร์ฟเวอร์ COM ของนายทะเบียนเอง?
HKCR
{
nbsp ATL.นายทะเบียน = s ' ATL 2.0 ตัวลงทะเบียนคลาส
{
CLSID = '{44EC053A-400F-11D0-9DCD-00A0C90391D3 }' s
}
NoRemove CLSID
{
ForceRemove {44EC053A-400F-11D0-9DCD-00A0C90391D3 } =
s ' ATL 2.0 ตัวลงทะเบียนคลาส
{
ProgID = s ' ATL.นายทะเบียน '
InprocServer32 = s '%โมดูล%'
{
val ThreadingModel = 'Apartment' s
}
}
}
}(&N)
เวลาทำงาน เพิ่มแผนภูมินี้ในการแยกวิเคราะห์ ATL.Registrar
คีย์การ HKEY_CLASSES_ROOT
คีย์นี้ใหม่ ทีแล้ว:
ATL Registrar 2.0 Class
เป็นคีย์การเริ่มต้นค่าสายอักขระ?CLSID
เป็นคีย์ย่อย?{44EC053A-400F-11D0-9DCD-00A0C90391D3}
สำหรับ CLSID
(ค่านี้เป็นของผู้ลงทะเบียน CLSID สำหรับใช้กับCoCreateInstance.)
เนื่องจาก CLSID
เป็นการใช้ร่วมกัน มันจะไม่สามารถเอาออกในโหมด Unregister คำสั่ง NoRemove CLSID
ทำงาน โดยการบ่งชี้ที่ CLSID
ควรเปิดในโหมดที่ลงทะเบียน และละเว้นในโหมด Unregister?
การ ForceRemove
คำสั่งให้ฟังก์ชัน housekeeping โดยการเอาคีย์และคีย์ย่อยของทั้งหมดก่อน recreating คีย์ นี้จะเป็นประโยชน์ถ้าชื่อของคีย์ย่อยที่มีการเปลี่ยนแปลง ในตัวอย่างนี้สคริปต์ ForceRemove
ตรวจสอบเพื่อดูว่า {44EC053A-400F-11D0-9DCD-00A0C90391D3}
มีอยู่แล้ว ถ้ามีForceRemove
:
{44EC053A-400F-11D0-9DCD-00A0C90391D3}
ของคีย์ย่อยทั้งหมด?{44EC053A-400F-11D0-9DCD-00A0C90391D3}
?ATL Registrar 2.0 Class
เป็นค่าสายอักขระเริ่มต้นสำหรับ{44EC053A-400F-11D0-9DCD-00A0C90391D3}
?
ในการแยกวิเคราะห์แผนภูมิจะเพิ่มคีย์ย่อยใหม่สองเพื่อ {44EC053A-400F-11D0-9DCD-00A0C90391D3}
คีย์การแรก ProgID
ได้รับเป็นค่าสายอักขระเริ่มต้นที่ ProgID ปุ่มที่สอง InprocServer32
ได้รับค่าสายอักขระเริ่มต้น %MODULE%
นั่นคือค่า preprocessor อธิบายในส่วน การใช้ไส้พารามิเตอร์ (Preprocessor ของนายทะเบียนการ), ของบทความนี้ InprocServer32
ยัง ได้รับค่าชื่อ ThreadingModel
ด้วยค่าสายอักขระของApartment
?
เพื่อระบุมากกว่า หนึ่งในการแยกวิเคราะห์แผนภูมิในสคริปต์ เพียงแค่วางแผนภูมิหนึ่งในตอนท้ายของอีก ตัวอย่างเช่น สคริปต์ต่อไปนี้เพิ่มปุ่ม MyVeryOwnKey
กับต้นไม้ในการแยกวิเคราะห์สำหรับทั้ง HKEY_CLASSES_ROOT
และHKEY_CURRENT_USER
:
HKCR
{
nbsp 'MyVeryOwnKey' = s 'HowGoesIt
}
HKEY_CURRENT_USER
{
'MyVeryOwnKey' = s 'HowGoesIt
}(&N)
หมายเหตุnbsp ในสคริปต์นายทะเบียน 4 K คือ ขนาดของโทเค็นสูงสุด (โทเค็นมีองค์ประกอบใดรู้จักในไวยากรณ์) ในตัวสคริปต์อย่างก่อนหน้า HKCR
, HKEY_CURRENT_USER
, 'MyVeryOwnKey'
และ 'HowGoesIt?'
มีโทเค็นที่ทั้งหมด(&N)?