Контекстные меню оболочки

В настоящее время я работаю Windows 7 x64 machine,

Я написал следующий код для добавления контекстного меню по щелчку правой кнопкой мыши:

    RegistryKey rKey = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell", true);
    String[] names = rKey.GetSubKeyNames();
    foreach (String s in names)
    {
        System.Windows.Forms.MessageBox.Show(s); 
    }
    RegistryKey newKey = rKey.CreateSubKey("Your Application");
    RegistryKey newSubKey = newKey.CreateSubKey("command");
    newSubKey.SetValue("", "C:\\Windows\\System32\\notepad.exe");
    newSubKey.Close();
    newKey.Close();
    rKey.Close();                  

Если я повторяю процедуру прямо в реестре, она работает, но не через это.

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

1 ответ

Решение

Я проверил ваш код, и это хорошо и хорошо. Похоже, у вас нет прав доступа для открытия реестра из кода. Просто следуйте этим простым шагам:

  1. Закройте вашу визуальную студию. Затем снова откройте его в режиме запуска от имени администратора. Это можно сделать, щелкнув правой кнопкой мыши ссылку Visual Studio и выбрав "Запуск от имени администратора".
  2. Откройте ваш код и запустите его оттуда.

Если вы хотите напрямую запустить программу из Exe, щелкните правой кнопкой мыши на Exe и выберите "Запуск от имени администратора".

Если вы не хотите запускать от имени администратора, выполните следующие действия:

  1. Добавьте новый файл в ваш проект с именем App.manifest; добавив новый файл из проекта.
  2. Добавьте следующие данные в этот файл, остальное сделает волшебство.

Просто замените имя вашего приложения на MyApplication.app. Важной частью является раздел. Остальное генерируется автоматически.

  xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
  xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator"
      uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>
Другие вопросы по тегам