2013-11-27 3 views
0

Я пытаюсь поместить новый Menuitem в контекстное меню проводника, и я не могу заставить его работать.Элемент контекстного меню, не отображающий

Я не получаю никаких исключений или сообщений об ошибках, и я установил контрольные точки, и они не попадают. И я искал реестр, и его там нет. Что я делаю не так?

private const string MenuName = "Folder\\shell\\NewMenuOption"; 
    private const string Command = "Folder\\shell\\NewMenuOption\\command"; 

    private void Form1_Shown(object sender, EventArgs e) 
    { 
     using(var folder = new FolderBrowserDialog()) 
     { 
      if(folder.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      { 
       Properties.Settings.Default.ArchivePath = folder.SelectedPath; 
       Properties.Settings.Default.Save(); 

       RegistryKey regmenu = null; 
       RegistryKey regcmd = null; 
       try 
       { 
        regmenu = Registry.ClassesRoot.CreateSubKey(MenuName); 
        if (regmenu != null) 
         regmenu.SetValue("", "Archive"); 
        regcmd = Registry.ClassesRoot.CreateSubKey(Command); 
        if (regcmd != null) 
         regcmd.SetValue("", Environment.CurrentDirectory + @"\Archiver.exe"); 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(this, ex.ToString()); 
       } 
       finally 
       { 
        if (regmenu != null) 
         regmenu.Close(); 
        if (regcmd != null) 
         regcmd.Close(); 
       } 
      } 
      else 
      { 
       if(MessageBox.Show("In order to use Archiver, you must first specify where your archive is. Do you want to continue?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) 
       { 
        Application.Restart(); 
       } 
       else 
       { 
        this.Dispose(true); 
       } 
      } 
     } 
    } 
+1

Запуск от имени администратора? + где вы установили точки останова? –

+0

@BramVanStrydonck, ну, я не был уверен, где их установить, так как я думал, что код был довольно хорошим, поэтому я установил их везде! – uSeRnAmEhAhAhAhAhA

+0

Я попробую как администратор. Argh. Это учетная запись администратора - она ​​не должна требовать, чтобы я запускал чертовское приложение в качестве администратора! – uSeRnAmEhAhAhAhAhA

ответ

5

Запустите приложение в качестве администратора. Для внесения изменений в регистр могут потребоваться права администратора.

+1

. Как любое действие, которое что-то изменяет в системе, должно выполняться в полном режиме доверия. http://msdn.microsoft.com/en-us/library/aa970910 (v = vs.110) .aspx – woutervs

Смежные вопросы