Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
4 / 4 / 7
Регистрация: 05.04.2015
Сообщений: 68
1

Как создать ключ реестра в hex - C#

21.09.2015, 20:42. Показов 1509. Ответов 2
Метки нет (Все метки)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static class A
    {       
        public static void Start(string ii)
        {
            string regkeyfolder = @"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer";
            string paramname = "bla-bla-bla";
            byte[] paramvalue = null;
            if (ii == "1") 
            { 
                paramvalue = new byte[] { 01, 00, 00, 00 };                             
                using (RegistryKey key = Registry.CurrentUser.CreateSubKey(regkeyfolder))
                {               
                    key.SetValue(paramname, paramvalue);
                }
 
            }
            if (ii == "2")
            {
                paramvalue = new byte[] { 30,00,00,00,fe,ff,ff,ff,02,00,00,00,03,00,00,00,3e,00,00,00,3d,\
                  00,00,00,00,00,00,00,e3,02,00,00,00,05,00,00,20,03,00,00,60,00,00,00,02,00,\
                  00,00};
                using (RegistryKey key = Registry.CurrentUser.CreateSubKey(regkeyfolder))
                {
                    key.SetValue(paramname, paramvalue);
                }
            }
paramvalue = new byte[] { 01, 00, 00, 00 };
содаёт ключ в реестре
REG_BINARY

А как такое ключ добавить (с переносами \)?
{ 30,00,00,00,fe,ff,ff,ff,02,00,00,00,03,00,00,00,3e,00,00,00, 3d,\
00,00,00,00,00,00,00,e3,02,00,00,00,05,00,00,20,03,00,00,60, 00,00,00,02,00,\
00,00};
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2015, 20:42
Ответы с готовыми решениями:

Как создать ключ реестра в hex
Всем привет! Сегодня столкнулся с проблемой создания ключа: ...

Как создать ключ реестра bat файлами?
Привет всем мощным... Как вы уже в курсе в реестре есть разные типы ключей, сам рулю с делфи но...

Как создать ключ сразу в корневой ветке реестра?
Здравствуйте! Хочу на delphi по клику кнопки добавит ключ в одну из ветвей реестра. Делаю это...

Как удалить ключ реестра?
продолжаются проблемы после https://www.cyberforum.ru/windows-xp/thread663065.html теперь проблемы...

2
Администратор
Эксперт .NET
13851 / 11225 / 4569
Регистрация: 17.03.2014
Сообщений: 22,617
Записей в блоге: 1
22.09.2015, 13:16 2
ixw84555, в бинарном массиве не может быть никаких "переносов". Этот слеш скорее всего всего лишь способ записать набор данных в текстовом виде. Для записи в C# просто убери их. Плюс нужно добавить префикс 0x ко всем числам т.к. это hex-значения.
C#
1
2
3
paramvalue = new byte[] { 0x30, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d,
                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00,
                  0x00, 0x00};
0
4 / 4 / 7
Регистрация: 05.04.2015
Сообщений: 68
24.09.2015, 18:21  [ТС] 3
Как оказалось ключ надо не REG_BINARY а REG_EXPAND_SZ
C#
1
2
3
4
5
6
7
8
string regkeyfolder = @"SOFTWARE\Classes\Directory\background\shell\Z001AAA";
 
                paramname = "MUIVerb";
                paramvalue = "Открыть командную строку";
 
                paramname = "Icon";
                paramvalue_byte = new byte[] { 0x25, 0x00, 0x53, 0x00, 0x79, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x52, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x25, 0x00, 0x5c, 0x00, 0x73, 0x00, 0x79, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x33, 0x00, 0x32, 0x00, 0x5c, 0x00, 0x63, 0x00, 0x6d, 0x00, 0x64, 0x00, 0x2e, 0x00, 0x65, 0x00, 0x78, 0x00, 0x65, 0x00, 0x00, 0x00 };
                using (RegistryKey key = Registry.LocalMachine.CreateSubKey(regkeyfolder)) { key.SetValue(paramname, paramvalue_byte); }
Это выполнено. результат - не работает.
Ключ экспортирован в reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\she ll\Z001AAA]
"MUIVerb"="Открыть командную строку"
"Icon"=hex:25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6 f,00,6f,00,74,00,\
25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00, 5c,00,63,00,6d,\
00,64,00,2e,00,65,00,78,00,65,00,00,00

а надо (работает):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\she ll\Z001AAA]
"MUIVerb"="Открыть командную строку"
"Icon"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,0 0,6f,00,6f,00,74,\
00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32, 00,5c,00,63,00,\
6d,00,64,00,2e,00,65,00,78,00,65,00,00,00
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2015, 18:21

Как удалить ключ из реестра?
Всем доброго времени суток.Знающйе люди форума сего подскажите,(или покажите,если не...

Как изменить ключ реестра REG_DWORD?
Есть ключ REG_DWORD, знаю пару способов: WinAPI и TRegistry. Любой сгодится. А если использовать...

KIS: "Программа пытается создать вложенный ключ в защищенном разделе реестра"
Запускаю программу, KIS выводит сообщение: "*.ехе пытается создать вложенный ключ в запрещенном...

Как проверить, указывают ли 2 открытых хендла на один и тот же физический объект? (напр., ключ реестра)
Собственно, сабж.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.