Контекстные меню оболочки
В настоящее время я работаю 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 ответ
Я проверил ваш код, и это хорошо и хорошо. Похоже, у вас нет прав доступа для открытия реестра из кода. Просто следуйте этим простым шагам:
- Закройте вашу визуальную студию. Затем снова откройте его в режиме запуска от имени администратора. Это можно сделать, щелкнув правой кнопкой мыши ссылку Visual Studio и выбрав "Запуск от имени администратора".
- Откройте ваш код и запустите его оттуда.
Если вы хотите напрямую запустить программу из Exe, щелкните правой кнопкой мыши на Exe и выберите "Запуск от имени администратора".
Если вы не хотите запускать от имени администратора, выполните следующие действия:
- Добавьте новый файл в ваш проект с именем App.manifest; добавив новый файл из проекта.
- Добавьте следующие данные в этот файл, остальное сделает волшебство.
Просто замените имя вашего приложения на 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>