Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Windows.Forms;
- using Microsoft.Win32;
- namespace ContextHacker
- {
- public partial class frmMain : Form
- {
- RegistryKey key;
- int prechange;
- public frmMain()
- {
- InitializeComponent();
- cboMenu.Enter += new EventHandler(focusevent);
- }
- private void focusevent(object sender, EventArgs e)
- {
- prechange = cboMenu.SelectedIndex;
- }
- private void cmdAdd_Click(object sender, EventArgs e)
- {
- switch (cboMenu.SelectedIndex)
- {
- case 0:
- Registry.ClassesRoot.CreateSubKey("Directory\\Background\\shell\\" + txtText.Text);
- key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell\\" + txtText.Text, true);
- key.SetValue(null, txtText.Text);
- if (cbExtended.CheckState == CheckState.Checked)
- key.SetValue("Extended", "");
- key.CreateSubKey("command");
- key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell\\" + txtText.Text + "\\command", true);
- key.SetValue(null, txtFunction.Text);
- break;
- case 1:
- Registry.ClassesRoot.CreateSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + txtText.Text);
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + txtText.Text, true);
- key.SetValue(null, txtText.Text);
- if (cbExtended.CheckState == CheckState.Checked)
- key.SetValue("Extended", "");
- key.CreateSubKey("command");
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + txtText.Text + "\\command", true);
- key.SetValue(null, txtFunction.Text);
- break;
- case 2:
- Registry.ClassesRoot.CreateSubKey("*\\shell\\" + txtText.Text);
- key = Registry.ClassesRoot.OpenSubKey("*\\shell\\" + txtText.Text, true);
- key.SetValue(null, txtText.Text);
- if (cbExtended.CheckState == CheckState.Checked)
- key.SetValue("Extended", "");
- key.CreateSubKey("command");
- key = Registry.ClassesRoot.OpenSubKey("*\\shell\\" + txtText.Text + "\\command", true);
- key.SetValue(null, txtFunction.Text);
- break;
- case 3:
- Registry.ClassesRoot.CreateSubKey("Directory\\shell\\" + txtText.Text);
- key = Registry.ClassesRoot.OpenSubKey("Directory\\shell\\" + txtText.Text, true);
- key.SetValue(null, txtText.Text);
- if (cbExtended.CheckState == CheckState.Checked)
- key.SetValue("Extended", "");
- key.CreateSubKey("command");
- key = Registry.ClassesRoot.OpenSubKey("Directory\\shell\\" + txtText.Text + "\\command", true);
- key.SetValue(null, txtFunction.Text);
- break;
- case 4:
- Registry.ClassesRoot.CreateSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + txtText.Text);
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + txtText.Text, true);
- key.SetValue(null, txtText.Text);
- if (cbExtended.CheckState == CheckState.Checked)
- key.SetValue("Extended", "");
- key.CreateSubKey("command");
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + txtText.Text + "\\command", true);
- key.SetValue(null, txtFunction.Text);
- break;
- default:
- break;
- }
- listitems();
- }
- private void frmMain_Load(object sender, EventArgs e)
- {
- key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
- cboMenu.SelectedIndex = (key.GetValue("ProductName", null).ToString().Contains("XP")) ? 2 : 0;
- key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell");
- if (key == null)
- {
- Registry.ClassesRoot.CreateSubKey("Directory\\Background\\shell");
- }
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell");
- if (key == null)
- {
- Registry.ClassesRoot.CreateSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell");
- }
- key = Registry.ClassesRoot.OpenSubKey("*\\shell");
- if (key == null)
- {
- Registry.ClassesRoot.CreateSubKey("*\\shell");
- }
- key = Registry.ClassesRoot.OpenSubKey("Directory\\shell");
- if (key == null)
- {
- Registry.ClassesRoot.CreateSubKey("Directory\\shell");
- }
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell");
- if (key == null)
- {
- Registry.ClassesRoot.CreateSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell");
- }
- }
- private void cboMenu_SelectedIndexChanged(object sender, EventArgs e)
- {
- if (cboMenu.SelectedIndex == 0)
- {
- key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
- if (key.GetValue("ProductName", null).ToString().Contains("XP"))
- {
- MessageBox.Show("Windows XP does not support editing of the desktop context menu via the registry. Please select another option.", "Error");
- cboMenu.SelectedIndex = prechange;
- }
- }
- listitems();
- prechange = cboMenu.SelectedIndex;
- }
- private void listitems()
- {
- string[] s;
- cboItem.Items.Clear();
- switch (cboMenu.SelectedIndex)
- {
- case 0:
- key = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell\\", true);
- s = key.GetSubKeyNames().ToArray();
- for (int i = 0; i < s.Length; i++)
- {
- cboItem.Items.Add(s[i]);
- }
- break;
- case 1:
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\", true);
- s = key.GetSubKeyNames().ToArray();
- for (int i = 0; i < s.Length; i++)
- {
- cboItem.Items.Add(s[i]);
- }
- break;
- case 2:
- key = Registry.ClassesRoot.OpenSubKey("*\\shell\\", true);
- s = key.GetSubKeyNames().ToArray();
- for (int i = 0; i < s.Length; i++)
- {
- cboItem.Items.Add(s[i]);
- }
- break;
- case 3:
- key = Registry.ClassesRoot.OpenSubKey("Directory\\shell\\", true);
- s = key.GetSubKeyNames().ToArray();
- for (int i = 0; i < s.Length; i++)
- {
- cboItem.Items.Add(s[i]);
- }
- break;
- case 4:
- key = Registry.ClassesRoot.OpenSubKey("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\", true);
- s = key.GetSubKeyNames().ToArray();
- for (int i = 0; i < s.Length; i++)
- {
- cboItem.Items.Add(s[i]);
- }
- break;
- default:
- break;
- }
- if (cboItem.Items.Count > 0)
- cboItem.SelectedIndex = 0;
- }
- private void cmdRemove_Click(object sender, EventArgs e)
- {
- switch (cboMenu.SelectedIndex)
- {
- case 0:
- Registry.ClassesRoot.DeleteSubKeyTree("Directory\\Background\\shell\\" + cboItem.SelectedItem.ToString());
- break;
- case 1:
- Registry.ClassesRoot.DeleteSubKeyTree("CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\\shell\\" + cboItem.SelectedItem.ToString());
- break;
- case 2:
- Registry.ClassesRoot.DeleteSubKeyTree("*\\Background\\shell\\" + cboItem.SelectedItem.ToString());
- break;
- case 3:
- Registry.ClassesRoot.DeleteSubKeyTree("Directory\\shell\\" + cboItem.SelectedItem.ToString());
- break;
- case 4:
- Registry.ClassesRoot.DeleteSubKeyTree("CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\" + cboItem.SelectedItem.ToString());
- break;
- default:
- break;
- }
- listitems();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement