จากบทความที่สอง เราได้เห็นตัวอย่างการจัดการ Keys และ Subkeys กันแล้ว ต่อไปบทความนี้สอนการใช้งานจริง โดยผมได้เพิ่มคำสั่งที่จำเป็นเพิ่มเติม เพื่อการทำงานที่มีประสิทธิภาพมากยิ่งขึ้น โดยผมได้แยกกรณีที่จำเป็นต้องใช้ ดังนี้
บทความในชุดนี้มี 4 ตอน ดังนี้ครับ
กรณีที่ 1 : อ่าน Value จาก Registry โดยมีขั้นตอนการทำงาน
- เปิดการเชือมต่อกับ Hives และ Subkey ต่างๆ
- อ่านค่า Value แต่ละอันออกมา
- ปิดการเชื่อมต่อ
private void readRegistryValue(string pStrRegistryPath) { //เปิด Registry ในส่วน HKEY_LOCAL_MACHINE RegistryKey baseRegistryKey = Registry.LocalMachine; //เปิด Sub Key ที่ต้องการตาม Path ในที่นี้ คือ RegistryKey registrySubKey = baseRegistryKey.OpenSubKey(pStrRegistryPath); try { //ตรวจสอบว่าพบ Key นี้ หรือไม่ if (registrySubKey != null) { //อ่านข้อมูลจาก Registry Value "MANUFACTURER" มาแสดงผลใน Textbox txtManufacturer this.txtManufacturer.Text = registrySubKey.GetValue("MANUFACTURER").ToString(); //อ่านข้อมูลจาก Registry Value "MODEL" //และมีการตรวจสอบ ในกรณีที่ไม่พบข้อมูล Value "MODEL" ให้ Return คำว่า "ERROR Value Not Found" แทน this.txtModel.Text = registrySubKey.GetValue("MODEL","ERROR Value Not Found").ToString(); } } catch(Exception ex) { //แสดง MessageBox เมื่อเกิด Exception MessageBox.Show(this, "Error occur: " + ex.Message, "System Message", MessageBoxButtons.OK); } finally { //ปิดการเชื่อมต่อ baseRegistryKey.Close(); } }
กรณีที่ 2 : เขียน Value และสร้าง Value โดยมีขั้นตอนการทำงาน
- เปิดการเชือมต่อกับ Hives และ Subkey ต่างๆ โดยต้องมีการอนุญาติให้เขียนข้อมูลด้วย
- เขียนค่า Value แต่ละอันออกมา โดยมีแต่ละแบบให้ศึกษา ดังนี้
- แบบที่ 1: มี Registry Value ระบบอัปเดตค่าใหม่ลงไป ได้แก่ MANUFACTURER และ MODEL
- แบบที่ 2: ไม่มี Registry Value ระบบ จะสร้าง Registry Value ขึ้นมาใหม่ และเก็บค่าลงไป ได้แก่ APPNAME และ APPDEV
- ปิดการเชื่อมต่อ
private void writeRegistryValue(string pStrRegistryPath) { //เปิด Registry ในส่วน HKEY_LOCAL_MACHINE RegistryKey baseRegistryKey = Registry.LocalMachine; //เปิด Sub Key ที่ต้องการตาม Path และกำหนด writeable เป็น true เพื่ออนุญาติให้มีการเขียนข้อมูลลง หรือสร้าง Value ใหม่ RegistryKey registrySubKey = baseRegistryKey.OpenSubKey(pStrRegistryPath, true); try { //ตรวจสอบว่าพบ Key นี้ หรือไม่ if (registrySubKey != null) { //แบบที่ 1: มี Registry Value แล้ว registrySubKey.SetValue("MANUFACTURER", "TOSHIBA"); registrySubKey.SetValue("MODEL", "L645"); //แบบที่ 2: ไม่มี Registry Value แล้ว ระบบสร้าง Value ขึ้นมาใหม่ และเขียนค่าลงไป registrySubKey.SetValue("APPNAME", "DS_Jjewerly"); registrySubKey.SetValue("APPDEV", "Chatri Ngambenchawong"); } } catch(Exception ex) { //แสดง MessageBox เมื่อเกิด Exception MessageBox.Show(this, "Error occur: " + ex.Message, "System Message", MessageBoxButtons.OK); } finally { //ปิดการเชื่อมต่อ baseRegistryKey.Close(); } }
กรณีที่ 3 : ลบ Value โดยมีขั้นตอนการทำงาน
- เปิดการเชือมต่อกับ Hives และ Subkey ต่างๆ โดยต้องมีการอนุญาติให้เขียนข้อมูลด้วย
- ทำการลบ Value นั้น
- แบบที่ 1: ลบแบบปกติ
- แบบที่ 2: ลบ และกำหนดให้ระบบไม่แจ้ง Exception กรณีที่ไม่เจอ Registry Value นั้น
- แบบที่ 3: ลบ และกำหนดให้ระบบแจ้ง Exception กรณีที่ไม่เจอ Registry Value นั้น
- ปิดการเชื่อมต่อ
private void deleteRegistryValue(string pStrRegistryPath) { //เปิด Registry ในส่วน HKEY_LOCAL_MACHINE RegistryKey baseRegistryKey = Registry.LocalMachine; //เปิด Sub Key ที่ต้องการตาม Path และกำหนด writeable เป็น true ถ้าโปรแกรมไม่มีค่านี้ สามารถสร้างเพิ่มได้เลย RegistryKey registrySubKey = baseRegistryKey.OpenSubKey(pStrRegistryPath, true); try { //ตรวจสอบว่าพบ Key นี้ หรือไม่ if (registrySubKey != null) { //แบบที่ 1: ลบข้อมูลจาก Registry registrySubKey.DeleteValue("ISEVALUATE"); //แบบที่ 2: ลบข้อมูลจาก Registry โดยกำหนดให้ไม่แจ้ง Error(โยน Exception) กรณีไม่พบ Value นั้น registrySubKey.DeleteValue("REGISDATE", false); //แบบที่ 3: ลบข้อมูลจาก Registry โดยกำหนดให้แจ้ง Error(โยน Exception) กรณีไม่พบ Value นั้น registrySubKey.DeleteValue("EXPIREDATE", true); } } catch(Exception ex) { //แสดง MessageBox เมื่อเกิด Exception MessageBox.Show(this, "Error occur: " + ex.Message, "System Message", MessageBoxButtons.OK); } finally { //ปิดการเชื่อมต่อ baseRegistryKey.Close(); } }
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.