1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.ComponentModel;
   4:  using System.Data;
   5:  using System.Drawing;
   6:  using System.Text;
   7:  using System.Windows.Forms;
   8:  using System.Security;
   9:   
  10:  namespace UnrealKeyChanger
  11:  {
  12:      public partial class frmMain : Form
  13:      {
  14:          public frmMain()
  15:          {
  16:              InitializeComponent();
  17:          }
  18:   
  19:          private void btnRetreive_Click(object sender, EventArgs e)
  20:          {
  21:              try
  22:              {
  23:                  string CurrentKey = (string)
  24:                      Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Unreal Technology\Installed Apps\UT2004", "CDKey", "");
  25:   
  26:                  if (string.IsNullOrEmpty(CurrentKey))
  27:                  {
  28:                      lblMessage.Text = "None!";
  29:                  }
  30:                  else
  31:                  {
  32:                      this.txtReadOnly.Text = CurrentKey;
  33:   
  34:                      if (CurrentKey.Contains("SRVER"))
  35:                      {
  36:                          lblMessage.Text = "Server Key";
  37:                      }
  38:                      else
  39:                      {
  40:                          lblMessage.Text = "";
  41:                      }
  42:                  }
  43:              }
  44:              catch (NullReferenceException)
  45:              {
  46:                  lblMessage.Text = "None!";
  47:              }
  48:          }
  49:   
  50:          private void btnChange_Click(object sender, EventArgs e)
  51:          {
  52:              if (!this.txtNewKey.MaskFull)
  53:              {
  54:                  this.lblMessage.Text = "Incomplete CD Key";
  55:                  return;
  56:              }
  57:   
  58:              try
  59:              {
  60:                  Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Unreal Technology\Installed Apps\UT2004",
  61:                      "CDKey", this.txtNewKey.Text, Microsoft.Win32.RegistryValueKind.String);
  62:   
  63:                  lblMessage.Text = "Key Changed";
  64:              }
  65:              catch (ArgumentNullException)
  66:              {
  67:                  lblMessage.Text = "Error!";
  68:              }
  69:              catch (ArgumentException)
  70:              {
  71:                  lblMessage.Text = "Error!";
  72:              }
  73:              catch (SecurityException)
  74:              {
  75:                  lblMessage.Text = "Error!";
  76:              }
  77:              catch (UnauthorizedAccessException)
  78:              {
  79:                  lblMessage.Text = "Error!";
  80:              }
  81:          }
  82:   
  83:      }
  84:  }