Cara mengakses Registry Windows menggunakan C #

Microsoft .Net memungkinkan Anda untuk mengakses Windows Registry secara terprogram untuk menyimpan dan mengambil data. Registri Windows adalah database hierarkis yang terdiri dari kumpulan Kunci, Sub Kunci, Kunci yang Telah Ditentukan, Hives, dan Entri Nilai dan dapat digunakan untuk menyimpan data spesifik sistem atau aplikasi tertentu. MSDN menyatakan: "Registri bertindak sebagai pusat penyimpanan informasi untuk sistem operasi dan aplikasi di komputer."

Anda dapat memanfaatkan Windows Registry untuk menyimpan metadata konfigurasi aplikasi Anda sehingga Anda dapat mengambilnya di lain waktu jika perlu.

Registri Windows menyimpan jenis informasi berikut secara hierarkis.

  1. Informasi profil pengguna
  2. Informasi perangkat keras sistem Anda
  3. Pengaturan properti
  4. Informasi tentang program yang diinstal di sistem Anda

Perhatikan bahwa Anda harus ekstra hati-hati saat memanipulasi Registri Windows. Anda disarankan untuk membuat cadangan registri Anda sebelum membuat perubahan apa pun sehingga Anda dapat mengembalikan perubahan tersebut jika perlu. Anda dapat membuat cadangan Registri Windows Anda dengan mengikuti langkah-langkah berikut.

  1. Dari Mulai, pilih Jalankan
  2. Ketik Regedit dan tekan Enter untuk menjalankan Windows Registry Editor
  3. Sekarang klik File -> Export
  4. Dalam dialog "Simpan Sebagai" tentukan nama
  5. Pilih cabang tertentu atau opsi "Semua" untuk mengekspor seluruh informasi registri
  6. Klik Simpan

Informasi registri Anda akan disimpan dalam file .reg dengan nama yang Anda tentukan. Anda sekarang aman untuk memanipulasi basis data registri Anda secara terprogram.

Bekerja dengan Registry Windows di C #

Anda dapat membaca, menulis, dan menghapus kunci, sub kunci, dan nilai secara terprogram dari Windows Registry. Anda dapat menganggap kunci registri adalah folder di sistem windows Anda. Perhatikan bahwa kunci dapat memiliki sub kunci - sama seperti folder berisi sub folder di dalamnya. Untuk bekerja dengan Registri Windows menggunakan C #, Anda dapat memanfaatkan kelas Registri di namespace Microsoft.Win32.

Sekarang mari kita menggali beberapa kode. Pada bagian ini kita akan membahas bagaimana kita dapat membuat, membaca atau menghapus subkunci dari Windows Registry menggunakan C #.

Untuk membuat sub kunci baru, Anda dapat memanfaatkan metode CreateSubKey seperti yang ditunjukkan di bawah ini.

Registry.CurrentUser.CreateSubKey(@"SOFTWARE\");

Metode CreateSubKey membuat sub kunci baru dan mengembalikannya - jenis kembaliannya adalah RegistryKey. Cuplikan kode berikut menunjukkan bagaimana Anda dapat membuat sub kunci baru bernama dan menyimpan nilai kunci di dalamnya.

using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\"))

           {

               key.SetValue("Key 1", "Value 1");

               key.SetValue("Key 2", "Value 2");              

               key.Close();

           }  

Metode berikut dapat digunakan untuk membaca nilai dari sub kunci.

static string ReadSubKeyValue(string subKey, string key)

       {

           string str = string.Empty;

           using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(subKey))

           {

               if (registryKey != null)

               {

                   str = registryKey.GetValue(key).ToString();

                   registryKey.Close();

               }

           }

           return str;

       }

Metode ReadSubKeyValue menerima subkunci dan kunci sebagai parameter dan mengembalikan nilainya. Berikut cara memanggil metode ReadSubKeyValue.

static void Main(string[] args)

       {

           string subKey = @"SOFTWARE\";

           string str = ReadSubKeyValue(subKey, "Key 1");

           Console.WriteLine(str);

           Console.Read();

       }

Anda juga dapat menghapus sub kunci menggunakan metode statis DeleteSubKey. Daftar kode berikut menggambarkan bagaimana Anda dapat melakukan ini.

static bool DeleteKey(string KeyName)

       {

           try

           {

               Registry.CurrentUser.DeleteSubKey(KeyName);

               return true;

           }

           catch

           {

               return false;

           }

       }

Metode di atas mengembalikan nilai true jika penghapusan sub kunci berhasil, salah jika sebaliknya. Anda mungkin ingin memeriksa apakah sub kunci ada sebelum Anda mencoba untuk menghapusnya - dengan cara itu perubahan pengecualian yang dilemparkan minimal. Saya menyerahkan kepada Anda untuk mengubah kode di atas untuk memasukkan perubahan ini.

Anda juga dapat mengambil semua sub kunci dari kunci tertentu menggunakan metode GetSubKeyNames dari kelas RegistryKey. Potongan kode berikut menggambarkan bagaimana hal ini dapat dicapai.

static List GetChildSubKeys(string key)

       {

           List lstSubKeys = new List();

           try

          {

               using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(key))

               {

                   if (!(registryKey == null))

                   {

                       string[] temp = registryKey.GetSubKeyNames();

                       foreach (string str in temp)

                       {

                           lstSubKeys.Add(str);

                       }

                   }

               }

           }

           catch

           {

               //Write your custom exception handling code here

           }

           return lstSubKeys;

       }

Untuk menggunakan metode GetChildSubKeys dan mengambil semua sub kunci dari kunci tertentu, Anda dapat menulis kode berikut.

List lstSubKeys = GetChildSubKeys(subKey);