Registry(3)

ตอนที่ 52

Registry (3)

ใน HKEY_CLASSES_ROOT นอกจากจะเชื่อมโยงนามสกุลของไฟล์ต่างๆ และจะใช้โปรแกรมอะไรเปิดไฟล์นามสกุลนั้นๆ ตามที่ได้ตั้งค่า Options ไว้แล้ว ยังมีการเชื่อมโยงข้อมูล CLSIDs (Class Identifier) ไปสู่ Objects ต่างๆ ใน Windows ด้วย ถ้าจะพูดง่ายๆ ก็คือ CLSID เป็นสถานที่รวบรวมเก็บชื่อเรียกโมเดลวัตถุที่เป็นองค์ประกอบ (Component Object Model) ในคอมพิวเตอร์นั้นๆ ไว้ แต่ชื่อเรียกที่ Windows เรียกจะไม่ใช่ภาษาที่พวกเราจะเข้าใจได้ เราจะเข้าใจได้ก็ต่อเมื่อได้แปลงค่าตัวแปรชื่อเหล่านั้นออกมาเป็นภาษาที่เราเข้าใจได้

CLSID ถูกเก็บไว้ที่ HKEY_CLASSES_ROOT\CLSID ภายใน CLSID จะประกอบไปด้วยชื่อเรียก Component Object Model มากมาย เช่น {2227A280-3AEA-1069-A2DE-08002B30309D} คือชื่อเรียก Printer and Faxes และ {7007ACC7-3202-11D1-AAD2-00805FC1270E} คือชื่อเรียกหรือชื่อที่เชื่อมไปถึง Network Connections เป็นต้น

CLSID ก็เป็น KEY อันหนึ่งใน HKEY_CLASSES_ROOT นั่นเอง ส่วนพวกตัวเลขและตัวอักษรต่างๆ ที่อยู่ในเครื่องหมาย { } ก็คือชื่อเรียก Component Object Model เมื่อแปรค่าออกมาก็จะมีชื่อเรียกเป็นภาษาที่เราเข้าใจได้ดังเช่นที่ยกตัวอย่างข้างต้น

การที่เราจะรู้ได้ว่าค่าตัวแปรใน CLSID ตัวใดมีความหมายว่าหมายถึงอะไร เราจะต้องเปิดหน้าต่าง Registry Editor ขึ้นมาแล้วเข้าไปที่ HKEY_CLASSES_ROOT\CLSID จากนั้นจะเห็นค่าตัวแปรใน KEY ย่อยๆ เรียงกันลงมาเป็นตับ ลองคลิกดูค่า CLSID ทีละตัวเราก็จะเห็นชื่อเรียกของมันอยู่ทางด้านขวามือของหน้าต่าง Registry Editor

เมื่อถึงเวลาใช้งาน Windows จะไม่เรียกใช้ CLSID จาก HKEY_CLASSES_ROOT\CLSID โดยตรง แต่จะเรียกใช้ผ่าน KEY อื่นที่ถูกจัดหมวดหมู่ไว้ใน KEY ย่อยในนามของ NameSpace ลองเข้าไปที่ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ControlPanel\ NameSpace เราจะเห็น CLSID ใน KEY ย่อยของ Namespace นี้เช่นเดียวกัน

จากการกล่าวถึง CLSID ยืดยาวลามมาถึง Namespace ก็เพื่อต้องการชี้ให้เห็นว่า Registry มีความสลับซับซ้อนมาก การจะทำอะไรที่เกี่ยวข้องใน Registry จะต้องมีความรู้ความเข้าใจมากพอสมควร ไม่เช่นนั้นแล้วอาจเกิดความเสียหายกับคอมพิวเตอร์เครื่องนั้นๆ ได้

ข้อเน้นย้ำเกี่ยวกับการเข้าไปยุ่งเกี่ยวกับ Registry

1 โปรแกรมต่างๆ จะเข้ามาอ่านค่าต่างๆ ใน Registry แล้วนำไปแสดงผลหน้าจอ Desktopแต่ละโปรแกรมจะตีความและอ่านค่าใน Registry ไม่เหมือนกัน เช่น ค่า DWORD Value เป็น 1 โปรแกรมนี้อาจจะอ่านและตีความว่าให้มีผลในการเปิดปฏิบัติการ แต่โปรแกรมอื่นอาจจะอ่านและตีความว่าให้มีผลเป็น อย่างอื่น Registry ซึ่งมีค่า String Value บางโปรแกรมก็อ่านและตีความไม่เหมือนกัน บางโปรแกรมจะอ่านเรียงลำดับไปเรื่อยๆ และแสดงผลไปตามลำดับที่อ่านได้ บางโปรแกรมเมื่อเข้ามาอ่านค่าแล้วอาจไม่พบค่าในลำดับใดลำดับหนึ่ง แทนที่จะอ่านต่อไปกลับหยุดอ่านเพียงเท่านั้นแล้วนำค่าที่อ่านได้มาแสดงผลเพียงเท่านั้น ฉะนั้นการเข้าไปปรับเปลี่ยนหรือยุ่งเกี่ยวกับ Registry จึงไม่มีความแน่นอนตายตัวแต่กลับมีความยืดหยุ่นสูงมาก ต้องใช้ความระมัดระวังอย่างยิ่ง

2 ระบบของ Windows มีการปรับตัวไปตามการปรับแต่งค่า Registry ถ้ามีการตั้งค่าผิด Windows ก็จะอ่านและตีความค่านั้นๆ แล้วนำมาแสดงผลแบบผิดๆ เนื่องจาก Windows ต้องปรับตัวไปตามค่าที่ได้รับมา มีบางโปรแกรมที่เราปรับค่าผิดไปแล้วจะไม่สามารถปรับแก้ไขให้กลับมาเหมือนเดิมได้เลย

3 การปรับค่า Registry ให้ทำเท่าที่จำเป็นเท่านั้น ถ้ามีวิธีปรับค่าการแสดงผลได้โดยไม่ต้องเข้าไปปรับค่า Registry โดยตรงก็ให้ทำอย่างนั้นก่อนมิใช่คิดอะไรไม่ออกก็เข้าไปหาคำตอบหรือแก้ไขด้วย Registry อยู่ร่ำไป

4 Registry ของ Windows แต่ละ Version จะคล้ายๆ กัน แต่ไม่เหมือนกันทั้งหมด การนำ Registry จาก Version หนึ่งมาใช้กับอีก Version หนึ่งอาจจะไม่ได้ผล

5 การปรับแก้ Registry อาจจะไม่เกิดผลใดๆ ขึ้นมาเลยก็ได้หรืออาจจะทำให้เกิดผลไปใน ทางตรงกันข้ามกับความปรารถนาของผู้ปรับแก้ไขเนื่องเพราะการใส่ค่าผิดเพี้ยนไปเพียงอักษรเดียวหรือตัวเลขเดียว ฉะนั้นการปรับแก้จะต้องใส่ค่าตัวแปรต่างๆ ให้ถูกต้องแน่นอนด้วย

ข้อความนี้ถูกเขียนใน คอมพิวเตอร์และอินเทอร์เน็ต คั่นหน้า ลิงก์ถาวร

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s