Advertisement
Guest User

Untitled

a guest
May 25th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.52 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Windows.Forms;
  4. using Microsoft.Win32;
  5.  
  6. namespace ContextHacker
  7. {
  8.     public partial class frmMain : Form
  9.     {
  10.         RegistryKey key;
  11.         int prechange;
  12.  
  13.         public frmMain()
  14.         {
  15.             InitializeComponent();
  16.             cboMenu.Enter += new EventHandler(focusevent);
  17.         }
  18.  
  19.         private void focusevent(object sender, EventArgs e)
  20.         {
  21.             prechange = cboMenu.SelectedIndex;
  22.         }
  23.  
  24.         private void cmdAdd_Click(object sender, EventArgs e)
  25.         {
  26.             switch (cboMenu.SelectedIndex)
  27.             {
  28.                 case 0:
  29.                     Registry.ClassesRoot.CreateSubKey("Directory\\Background\\shell\\" + txtText.Text);
  30.                     key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell\\" + txtText.Text, true);
  31.                     key.SetValue(null, txtText.Text);
  32.                     if (cbExtended.CheckState == CheckState.Checked)
  33.                         key.SetValue("Extended", "");
  34.                     key.CreateSubKey("command");
  35.                     key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell\\" + txtText.Text + "\\command", true);
  36.                     key.SetValue(null, txtFunction.Text);
  37.                     break;
  38.                 case 1:
  39.                     Registry.ClassesRoot.CreateSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + txtText.Text);
  40.                     key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + txtText.Text, true);
  41.                     key.SetValue(null, txtText.Text);
  42.                     if (cbExtended.CheckState == CheckState.Checked)
  43.                         key.SetValue("Extended", "");
  44.                     key.CreateSubKey("command");
  45.                     key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + txtText.Text + "\\command", true);
  46.                     key.SetValue(null, txtFunction.Text);
  47.                     break;
  48.                 case 2:
  49.                     Registry.ClassesRoot.CreateSubKey("*\\shell\\" + txtText.Text);
  50.                     key = Registry.ClassesRoot.OpenSubKey("*\\shell\\" + txtText.Text, true);
  51.                     key.SetValue(null, txtText.Text);
  52.                     if (cbExtended.CheckState == CheckState.Checked)
  53.                         key.SetValue("Extended", "");
  54.                     key.CreateSubKey("command");
  55.                     key = Registry.ClassesRoot.OpenSubKey("*\\shell\\" + txtText.Text + "\\command", true);
  56.                     key.SetValue(null, txtFunction.Text);
  57.                     break;
  58.                 case 3:
  59.                     Registry.ClassesRoot.CreateSubKey("Directory\\shell\\" + txtText.Text);
  60.                     key = Registry.ClassesRoot.OpenSubKey("Directory\\shell\\" + txtText.Text, true);
  61.                     key.SetValue(null, txtText.Text);
  62.                     if (cbExtended.CheckState == CheckState.Checked)
  63.                         key.SetValue("Extended", "");
  64.                     key.CreateSubKey("command");
  65.                     key = Registry.ClassesRoot.OpenSubKey("Directory\\shell\\" + txtText.Text + "\\command", true);
  66.                     key.SetValue(null, txtFunction.Text);
  67.                     break;
  68.                 case 4:
  69.                     Registry.ClassesRoot.CreateSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + txtText.Text);
  70.                     key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + txtText.Text, true);
  71.                     key.SetValue(null, txtText.Text);
  72.                     if (cbExtended.CheckState == CheckState.Checked)
  73.                         key.SetValue("Extended", "");
  74.                     key.CreateSubKey("command");
  75.                     key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + txtText.Text + "\\command", true);
  76.                     key.SetValue(null, txtFunction.Text);
  77.                     break;
  78.                 default:
  79.                     break;
  80.             }
  81.             listitems();
  82.         }
  83.  
  84.         private void frmMain_Load(object sender, EventArgs e)
  85.         {
  86.             key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
  87.             cboMenu.SelectedIndex = (key.GetValue("ProductName", null).ToString().Contains("XP")) ? 2 : 0;
  88.             key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell");
  89.             if (key == null)
  90.             {
  91.                 Registry.ClassesRoot.CreateSubKey("Directory\\Background\\shell");
  92.             }
  93.             key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell");
  94.             if (key == null)
  95.             {
  96.                 Registry.ClassesRoot.CreateSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell");
  97.             }
  98.             key = Registry.ClassesRoot.OpenSubKey("*\\shell");
  99.             if (key == null)
  100.             {
  101.                 Registry.ClassesRoot.CreateSubKey("*\\shell");
  102.             }
  103.             key = Registry.ClassesRoot.OpenSubKey("Directory\\shell");
  104.             if (key == null)
  105.             {
  106.                 Registry.ClassesRoot.CreateSubKey("Directory\\shell");
  107.             }
  108.             key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell");
  109.             if (key == null)
  110.             {
  111.                 Registry.ClassesRoot.CreateSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell");
  112.             }
  113.         }
  114.  
  115.         private void cboMenu_SelectedIndexChanged(object sender, EventArgs e)
  116.         {
  117.             if (cboMenu.SelectedIndex == 0)
  118.             {
  119.                 key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
  120.                 if (key.GetValue("ProductName", null).ToString().Contains("XP"))
  121.                 {
  122.                     MessageBox.Show("Windows XP does not support editing of the desktop context menu via the registry. Please select another option.", "Error");
  123.                     cboMenu.SelectedIndex = prechange;
  124.                 }
  125.             }
  126.             listitems();
  127.             prechange = cboMenu.SelectedIndex;
  128.         }
  129.  
  130.         private void listitems()
  131.         {
  132.             string[] s;
  133.             cboItem.Items.Clear();
  134.             switch (cboMenu.SelectedIndex)
  135.             {
  136.                 case 0:
  137.                     key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell\\", true);
  138.                     s = key.GetSubKeyNames().ToArray();
  139.                     for (int i = 0; i < s.Length; i++)
  140.                     {
  141.                         cboItem.Items.Add(s[i]);
  142.                     }
  143.                     break;
  144.                 case 1:
  145.                     key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\", true);
  146.                     s = key.GetSubKeyNames().ToArray();
  147.                     for (int i = 0; i < s.Length; i++)
  148.                     {
  149.                         cboItem.Items.Add(s[i]);
  150.                     }
  151.                     break;
  152.                 case 2:
  153.                     key = Registry.ClassesRoot.OpenSubKey("*\\shell\\", true);
  154.                     s = key.GetSubKeyNames().ToArray();
  155.                     for (int i = 0; i < s.Length; i++)
  156.                     {
  157.                         cboItem.Items.Add(s[i]);
  158.                     }
  159.                     break;
  160.                 case 3:
  161.                     key = Registry.ClassesRoot.OpenSubKey("Directory\\shell\\", true);
  162.                     s = key.GetSubKeyNames().ToArray();
  163.                     for (int i = 0; i < s.Length; i++)
  164.                     {
  165.                         cboItem.Items.Add(s[i]);
  166.                     }
  167.                     break;
  168.                 case 4:
  169.                     key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\", true);
  170.                     s = key.GetSubKeyNames().ToArray();
  171.                     for (int i = 0; i < s.Length; i++)
  172.                     {
  173.                         cboItem.Items.Add(s[i]);
  174.                     }
  175.                     break;
  176.                 default:
  177.                     break;
  178.             }
  179.             if (cboItem.Items.Count > 0)
  180.                 cboItem.SelectedIndex = 0;
  181.         }
  182.  
  183.         private void cmdRemove_Click(object sender, EventArgs e)
  184.         {
  185.             switch (cboMenu.SelectedIndex)
  186.             {
  187.                 case 0:
  188.                     Registry.ClassesRoot.DeleteSubKeyTree("Directory\\Background\\shell\\" + cboItem.SelectedItem.ToString());
  189.                     break;
  190.                 case 1:
  191.                     Registry.ClassesRoot.DeleteSubKeyTree("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + cboItem.SelectedItem.ToString());
  192.                     break;
  193.                 case 2:
  194.                     Registry.ClassesRoot.DeleteSubKeyTree("*\\Background\\shell\\" + cboItem.SelectedItem.ToString());
  195.                     break;
  196.                 case 3:
  197.                     Registry.ClassesRoot.DeleteSubKeyTree("Directory\\shell\\" + cboItem.SelectedItem.ToString());
  198.                     break;
  199.                 case 4:
  200.                     Registry.ClassesRoot.DeleteSubKeyTree("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + cboItem.SelectedItem.ToString());
  201.                     break;
  202.                 default:
  203.                     break;
  204.             }
  205.             listitems();
  206.         }
  207.     }
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement