Windows
Registry is a hierarchical kind of database comes with windows operating
system, used to store system, application, user specific details.
How to open Windows
Registry?
Open
run prompt (Windows + r), type ‘regedit’ and press Enter. You can able to see
following structure.
HKEY_CLASSES_ROOT
This
root element holds information about installed applications and their
associated file extensions. For example, VLC, Windows media player applications
register their supported file formats.
HKEY_CURRENT_USER
The
entries under this root element holds currently logged-in user and their
specific settings.
HKEY_LOCAL_MACHINE
This
root element contains 5 subkeys.
a.
HARDWARE
b.
SAM
(Security Accounts Manager)
c.
SECURITY
d.
SOFTWARE
e.
SYSTEM
These
keys store settings that are used by operating system. It is adviced to not
alter these information.
HKEY_USERS
This
root element holds all the user profiles used in this machine.
HKEY_CURRENT_CONFIG
This
root element contains read-only settings about the available hardware settings.
These settings are not permanently stored on disk, but generated at the boot
time and updated at runtime.
Working with Registry
using C#
C#
provides two basic classes ‘Registry’, ‘RegistryKey’ to work with registry
entries.
Registry class
It
is used to access root elements of Registry Editor. By using this, you can
access the RegistryKey objects of the root keys.
RegistryKey class
A
Registrykey instance represents key-level node in the Registry.
Get all the keys of
Registry root element
Registry
class provide following static fields to access the root elements.
Field
|
Description
|
public
static readonly RegistryKey ClassesRoot;
|
This
field reads the Windows registry base key HKEY_CLASSES_ROOT.
|
public
static readonly RegistryKey CurrentConfig;
|
This
field reads the Windows registry base key HKEY_CURRENT_CONFIG.
|
public
static readonly RegistryKey CurrentUser;
|
This
field reads the Windows registry base key HKEY_CURRENT_USER
|
public
static readonly RegistryKey LocalMachine;
|
This
field reads the Windows registry base key HKEY_LOCAL_MACHINE.
|
public
static readonly RegistryKey PerformanceData;
|
This
field reads the Windows registry base key HKEY_PERFORMANCE_DATA.
|
public
static readonly RegistryKey Users;
|
This
field reads the Windows registry base key HKEY_USERS.
|
Following
program prints all the sub keys of the root element ‘HKEY_CURRENT_USER’
Program.cs
using System; using Microsoft.Win32; class Program { static void Main() { RegistryKey currentUser = Registry.CurrentUser; PrintKeys(currentUser); } static void PrintKeys(RegistryKey rkey) { // Retrieve all the subkeys for the specified key. String[] names = rkey.GetSubKeyNames(); Console.WriteLine("Subkeys of " + rkey.Name); Console.WriteLine("-----------------------------------------------"); foreach (String s in names) { Console.WriteLine(s); } } }
Output
Subkeys of HKEY_CURRENT_USER ----------------------------------------------- AppEvents AppXBackupContentType Console Control Panel Environment EUDC Identities Keyboard Layout MDocsUser Network Printers SOFTWARE System Volatile Environment
Storing data in a
registry
By
calling the 'CreateSubKey' method, you can create a sub key.
Following
statements are used to store data.
RegistryKey myAppSettings =
Registry.CurrentUser.CreateSubKey(@"SOFTWARE\MyAppSettings");
//storing the values
myAppSettings.SetValue("appName", "C# Tutorials");
myAppSettings.SetValue("Demo", "Registry keys
storage");
myAppSettings.Close();
Program.cs
using System; using Microsoft.Win32; class Program { static void Main() { RegistryKey myAppSettings = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\MyAppSettings"); //storing the values myAppSettings.SetValue("appName", "Tutorials"); myAppSettings.SetValue("Demo", "Registry keys storage"); PrintKeys(myAppSettings); myAppSettings.Close(); } static void PrintKeys(RegistryKey rkey) { // Retrieve all the subkeys for the specified key. String[] names = rkey.GetSubKeyNames(); Console.WriteLine("Subkeys of " + rkey.Name); Console.WriteLine("-----------------------------------------------"); foreach (String s in names) { Console.WriteLine(s); } } }
Read data from
Registry
By
using 'OpenSubKey' method, you can get RegistryKey instance.
Program.cs
using System; using Microsoft.Win32; class Program { static void Main() { RegistryKey adobeSettings = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Adobe\Acrobat Reader\DC\AcroApp"); PrintKeys(adobeSettings); } static void PrintKeys(RegistryKey rkey) { // Retrieve all the subkeys for the specified key. String[] names = rkey.GetSubKeyNames(); Console.WriteLine("Subkeys of " + rkey.Name); Console.WriteLine("-----------------------------------------------"); foreach (String key in names) { Console.WriteLine("{0} = {1}", key, rkey.GetValue(key)); } } }
No comments:
Post a Comment