ในการเรียกใช้ข้อมูลที่ถูกบันทึกอยู่ในรีจิสทรี แน่นอนว่าเราต้องมีการเรียกใช้โมดูลเฉพาะ ซึ่งโมดูลตัวนั้นก็คือ winreg โดยโมดูลนี้จะให้การเข้าถึง Windows Registry จะมีฟังก์ชันให้เลือกใช้ในการเข้าถึงรีจิสทรีอย่างมากมาย แต่ในบทความนี้จะสอนวิธีการดึงค่าจากรีจิสทรี ด้วยภาษาPython (ไพธอน)

 

  1. ให้ทำการติดตั้ง module winreg 
  2. เมื่อติดตั้งเเล้วให้ทำการเรียกใช้ winreg โดยการ import winreg
  3. สร้างตัวแปรเพื่อใช้ในการเก็บข้อมูลที่ตัวแปร registry (จะได้เป็นค่าดิบ) โดยใช้ฟังชัน openkey เพื่อเปิดค่าที่บันทึกในรีจิสทรีตามที่ระบุจากพาทที่อยู่ในนั้น โดยรูปแบบของการระบุพาร์ท ต้องมี HIVES, Keys, Subkeys ดังตัวอย่าง

ตัวอย่าง code

 

import winreg

registry=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,"Software\\Classes\\Applications\\SupportedTypes")

 

  1. เมื่อสามารถเข้าถึงได้แล้ว ให้ทำการสร้างตัวแปรเพื่อรับค่าที่อยู่ในรีจิสทรี โดยใช้ฟังก์ชัน EnamValue ในการระบุค่าของคีย์รีจิสทรีที่เปิดอยู่ โดยฟังก์ชันจะดึงข้อมูลในโครงสร้างที่อยู่ในส่วนของ Valus ซึ่งจะเก็บเฉพาะค่า name, type, และ data (กำหนดค่ารีจิสทรีในอินเด็กที่ 0) แล้วให้ทำการแสดงค่าของตัวแปร value (ค่า Data ในรีจิสทรี)

 

name,value,type = winreg.EnumValue(registry,0)

print (value)

 

ผลลัพธ์ได้จากการดึงค่าตามพาทที่ระบุในรีจิสทรี
แสดงผลลัพธ์ที่ได้จากการดึงข้อมูล

5.เมื่อดึงค่าเรียบร้อยแล้วจะได้ผลลัพธ์ดังรูป

 

จะเห็นได้ว่าเพียงเเค่เราเลือกใช้ฟังก์ชันบางฟังก์ชันในโมดูล winreg เพียงไม่กี่ฟังก์ชันก็สามารถที่จะดึงข้อมูลที่อยู่ในรีจิสทรีออกมาได้เเล้ว อย่างไรก็ตาม ฟังก์ชันในโมดูล winreg ไม่ได้มีเพียงเท่านี้ เเต่ยังมีอีกหลากหลายฟังชันให้ได้ทดลองใช้ตามกรณี เพื่อใช้เพิ่มศักยภาพในการทำงานร่วมกันของโปรแกรมที่เราสร้างขึ้นมาให้ดียิ่งขี้น

อ้างอิง :

winreg — Windows registry access,[ออนไลน์],ศึกษาเพิ่มเติมได้ที่ 
https://docs.python.org/3/library/winreg.html#

อ่าน/เขียน Registry ด้วยภาษา C#,[ออนไลน์],ศึกษาเพิ่มเติมได้ที่ 
https://naiwaen.debuggingsoft.com/series/c-sharp-read-write-regisrty/

Python and reading registry keys.,[ออนไลน์],ศึกษาเพิ่มเติมได้ที่
https://www.reddit.com/r/learnpython/comments/2uwrne/python_and_reading_registry_keys/

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การเขียนโปรแกรมเชิงวัตถุด้วยภาษา python
โดย wightfall อ 23 เม.ย. 2024 4:13 pm บอร์ด Python Knowledge
0
12
อ 23 เม.ย. 2024 4:13 pm โดย wightfall View Topic การเขียนโปรแกรมเชิงวัตถุด้วยภาษา python
แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
โดย wightfall จ 22 เม.ย. 2024 3:41 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
31
จ 22 เม.ย. 2024 3:41 pm โดย wightfall View Topic แนะนำการเดินทางและสถานที่ท่องเที่ยวในจังหวัดตรังและการเดินทางไปกรุงเทพ
ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
โดย จิ๊กโก๋ ส 20 เม.ย. 2024 2:29 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
3
149
อ 23 เม.ย. 2024 2:24 pm โดย mindphp View Topic ติดตั้ง ESXi ใหม่ จำเป็นต้อง Format Harddisk ก่อนติดตั้งไหมครับ
แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
โดย internTk21 ศ 19 เม.ย. 2024 11:56 am บอร์ด MindPHP News & Feedback
1
51
ศ 19 เม.ย. 2024 12:15 pm โดย internTk21 View Topic แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
โดย eange08 ศ 19 เม.ย. 2024 9:56 am บอร์ด Programming - PHP
1
89
ศ 19 เม.ย. 2024 10:28 am โดย mindphp View Topic สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว tar, zip
โดย mindphp พ 17 เม.ย. 2024 7:42 pm บอร์ด Linux - Web Server
0
126
พ 17 เม.ย. 2024 7:42 pm โดย mindphp View Topic คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว  tar, zip
เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
โดย mindphp จ 15 เม.ย. 2024 11:10 pm บอร์ด PostgreSQL
1
301
จ 15 เม.ย. 2024 11:14 pm โดย mindphp View Topic เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows
โดย tsukasaz ศ 12 เม.ย. 2024 2:25 pm บอร์ด Share Knowledge
0
319
ศ 12 เม.ย. 2024 2:25 pm โดย tsukasaz View Topic การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows