Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для INF1NUM
20 / 20 / 2
Регистрация: 27.09.2011
Сообщений: 155
.NET 4.x

Не удаётся записать в реестр

21.11.2013, 14:02. Показов 2133. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
простейшая операция:
C#
1
RegistryKey Example = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.CreateSubKey).CreateSubKey("Example", RegistryKeyPermissionCheck.ReadWriteSubTree);
никаких исключений не вызывается, но в реестр не пишется. в чём ошибка?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2013, 14:02
Ответы с готовыми решениями:

Не удаётся записать правильно данные в БД
Всем привет. Не удаётся подключиться к БД. string myConnectionString = "Database=test;Data Source=11.22.133.166;User...

Как записать значение в реестр
Делю программу, и мне надо занести значение в реест. но программа не хочет заносить вот код: string s = "\"%System%\\Blank.ico,...

Реестр. Как записать значение в Default?
Привет.Мне нужно чтоб в определенный ключ реестра,В "(Default)" записалось мое значение. Но код создает значение "(Default)" и...

8
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
21.11.2013, 15:38
У меня на Windows 8 ваш код пишет по адресу

XML
1
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Example
Вот что нашел http://support.microsoft.com/kb/305097
1
 Аватар для INF1NUM
20 / 20 / 2
Регистрация: 27.09.2011
Сообщений: 155
21.11.2013, 16:09  [ТС]
Grishaco, ёлки палки, точно!!! у меня же x64! там все мои ключи созданные и нашлись! =)))

Добавлено через 25 минут
тогда как в x86 реестр писать, если идёт редирект в WOW6432Node?
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
21.11.2013, 16:13
Я думаю об этом не стоит беспокоится система сама разрулит, дела в том, что выполняя в дебаге код я видел адрес "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\W indows\CurrentVersion\Explorer\CommandSt ore\shell\Example", а реально запись шла в "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node \Microsoft\Windows\CurrentVersion\Explor er\CommandStore\shell\Example"
0
 Аватар для INF1NUM
20 / 20 / 2
Регистрация: 27.09.2011
Сообщений: 155
21.11.2013, 16:39  [ТС]
Grishaco, да как же не беспокоиться, если ссылка на команду пишется в 32, а сама команда в 64 (или наоборот). Соответственно они друг друга не видят
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
21.11.2013, 16:43
Цитата Сообщение от INF1NUM Посмотреть сообщение
Соответственно они друг друга не видят
В смысле не видят?

Я не вижу проблем:

1. Что мешает писать и читать по адресу
"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node \Microsoft\Windows\CurrentVersion\Explor er\CommandStore\shell\Example"

2. Если система 32, то туда и пишется, если 64 то в другое место, для меня это прозрачно.

Во всяком случае я не сталкивался с проблемами, но и не писал по указанному адресу.
0
 Аватар для INF1NUM
20 / 20 / 2
Регистрация: 27.09.2011
Сообщений: 155
21.11.2013, 16:51  [ТС]
Ссылка:
C#
1
2
3
4
5
Registry.ClassesRoot.OpenSubKey("SystemFileAssociations", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl).CreateSubKey(".apk", RegistryKeyPermissionCheck.ReadWriteSubTree).CreateSubKey("DefaultIcon", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", Application.ExecutablePath, RegistryValueKind.ExpandString);
                RegistryKey shellAPK = Registry.ClassesRoot.OpenSubKey(@"SystemFileAssociations\.apk", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.CreateSubKey).CreateSubKey("shell", RegistryKeyPermissionCheck.ReadWriteSubTree);
                shellAPK.SetValue("Icon","\"" + Application.ExecutablePath + "\"");
                shellAPK.SetValue("MUIVerb","APKToolGUI");
                shellAPK.SetValue("SubCommands","APKToolGUI.Decompile;APKToolGUI.InstallFramework;APKToolGUI.Sign");
Комманда:
C#
1
2
3
4
5
6
7
RegistryKey shell = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
 
                RegistryKey decompile = shell.CreateSubKey("APKToolGUI.Decompile", RegistryKeyPermissionCheck.ReadWriteSubTree);
                decompile.SetValue("", "Decode", RegistryValueKind.String);
                decompile.SetValue("Icon", Application.ExecutablePath, RegistryValueKind.String);
                decompile.CreateSubKey("command", RegistryKeyPermissionCheck.ReadWriteSubTree).SetValue("", "\"" + Application.ExecutablePath + "\" \"d\" \"%1\"");
                decompile.Close();
Добавлено через 5 минут
Цитата Сообщение от Grishaco Посмотреть сообщение
2. Если система 32, то туда и пишется, если 64 то в другое место, для меня это прозрачно.
так вот где это другое место? Wow6464Node?
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
21.11.2013, 16:56
К сожалению я не могу помочь.

Может это поможет

Хотя может вы это и используете.
0
 Аватар для INF1NUM
20 / 20 / 2
Регистрация: 27.09.2011
Сообщений: 155
21.11.2013, 19:59  [ТС]
Grishaco, в общем всё понятно, только не пишет x32 программа в Wow6432Node.

что так @"SOFTWARE\Microsoft\Windows\CurrentVers ion\Explorer\CommandStore\shell"
что так @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explor er\CommandStore\shell"
всё равно пишет в одно место.

Добавлено через 1 час 32 минуты
Получилось! Чтобы 32bit программа могла писать в 64bit реестр (Wow6432Node) нужно использовать метод OpenBaseKey(). Пример:

C#
1
2
3
4
5
RegistryKey shell;
if(Environment.Is64BitOperatingSystem) // есть ОС 64bit
    shell = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
else // иначе ОС 32bit
    shell = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2013, 19:59
Помогаю со студенческими работами здесь

Разбить сообщение на логин/пароль, записать их в реестр
есть программка клиент сервер,клиент отправляет на сервер логин и пароль void Connect() { try { ...

Как сделать запись в реестр win7 64. В реестр попадает только последняя запись
Добрый вечер! Не могу сделать запись в реестр win7 64. Microsoft.Win32.RegistryKey hklm = Microsoft.Win32.Registry.LocalMachine; ...

Как записать в реестр строковый параметр с кавычками?
Всем привет есть код RegistryKey keydel = Registry.ClassesRoot.CreateSubKey("Directory\\shell\\DeleteFolderContent\\command"); ...

Как записать в реестр через RadioButton и CheckBox?
Всем доброго времени суток. Давно лежит проект, но в силу своего незнания, руки доходят редко. По этому прошу помощи у Знатоков) В чем...

Как записать свойства кнопки в реестр и затем прочитать их?
Как записать свойства кнопки(Font...шрифт, цвет и т.д) в реестр, и затем прочитать их? для ширины и высоты запись ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru