จากบทความแรก ผมได้พาผู้อ่านได้รู้จักกับ Registry และคำสั่งพื้นฐานกันมาบ้างแล้ว คราวนี้ผมสอนทำตัวอย่างที่ใช้จัดการ Keys และ Subkeys กันนะครับ(ใช้คำสั่งชุดเดียวกัน) โดยแยกเป็นกรณีต่างๆ ดังนี้
บทความในชุดนี้มี 4 ตอน ดังนี้ครับ
กรณีที่ 1: สร้าง SubKeys หรือ Keys
- ใช้คำสั่ง CreateSubKey ตามตัวอย่าง Code ดังนี้
private void createRegistryKey(string pStrRegistryPath)
{
try
{
//เปิด Registry ในส่วน HKEY_LOCAL_MACHINE
RegistryKey baseRegistryKey = Registry.LocalMachine;
//เปิด Sub Key ที่ต้องการตาม Path ในที่นี้ คือ
RegistryKey registrySubKey = baseRegistryKey.CreateSubKey(pStrRegistryPath);
}
catch(Exception ex)
{
//แสดง MessageBox เมื่อเกิด Exception
MessageBox.Show(this, "Error occur: " + ex.Message, "System Message", MessageBoxButtons.OK);
}
}กรณีที่ 2: เปิดและเชื่อมต่อ SubKeys หรือ Keys
- ใช้คำสั่ง OpenSubKey ถ้าหากไม่มี SubKeys หรือ Keys นั้นอยู่จริง คำสั่งนี้ Return ค่า null ตาม Code ดังนี้
private void openRegistryKey(string pStrRegistryPath)
{
//เปิด Registry ในส่วน HKEY_LOCAL_MACHINE
RegistryKey baseRegistryKey = Registry.LocalMachine;
//เปิด Sub Key ที่ต้องการตาม Path ในที่นี้ คือ
RegistryKey registrySubKey = baseRegistryKey.OpenSubKey(pStrRegistryPath);
try
{
//ตรวจสอบว่าพบ Key นี้ หรือไม่
if (registrySubKey != null)
{
MessageBox.Show(this, "Open Registry Keys/SubKeys Complete", "System Message", MessageBoxButtons.OK);
}
}
catch(Exception ex)
{
//แสดง MessageBox เมื่อเกิด Exception
MessageBox.Show(this, "Error occur: " + ex.Message, "System Message", MessageBoxButtons.OK);
}
finally
{
//ปิดการเชื่อมต่อ
baseRegistryKey.Close();
}
}กรณีที่ 3: ลบ SubKeys หรือ Keys
- ใช้คำสั่ง DeleteSubKey ซึ่งสามารถเขียนได้ 2 แบบ ได้ตาม Code ด้านล่าง
- หมายเหตุ ถ้าหากต้องการลบ SubKeys และ Keys ย่อยๆ ให้ใช้คำสั่ง DeleteSubKeyTree แทน
private void deleteRegistryKey(string pStrRegistryPath)
{
//เปิด Registry ในส่วน HKEY_LOCAL_MACHINE
RegistryKey baseRegistryKey = Registry.LocalMachine;
//เปิด Sub Key ที่ต้องการตาม Path ในที่นี้ คือ
RegistryKey registrySubKey = baseRegistryKey.OpenSubKey(pStrRegistryPath);
try
{
//แบบที่ 1: ตรวจสอบ SubKeys หรือ Keys โดยมีการตรวจสอบว่า Key นี้มีอยู่จริง หรือไม่
//ตรวจสอบว่าพบ Key นี้ หรือไม่
if (registrySubKey != null)
{
baseRegistryKey.DeleteSubKey(pStrRegistryPath);
}
//แบบที่ 2: ไม่ต้องตรวจสอบ แต่กำหนด Boolean ว่าให้ Throw Exception หรือไม่ในกรณีที่ไม่เจอ SubKeys หรือ Key นั้นๆ
//True = Throw Exception
//False = ไม่ Throw Exception
baseRegistryKey.DeleteSubKey(pStrRegistryPath,false);
}
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.



