Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Как программно определить тип параметра реестра?

04.04.2017, 19:23. Показов 1116. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! Продолжаем разбираться с реестром.

Вот есть такой способ. Допустим, есть раздел "HKEY_CLASSES_ROOT\foo", и там есть один параметр. Нужно его получить. Вот код:

Python
1
2
3
key_reg = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, "foo")
x = winreg.QueryInfoKey (key_reg)
printf (x[2])
x[2] - искомая цифра(номер). Потом ищем параметр под этим номером вот в этом списке и дело в шляпе.

Только всё это неправда. Создадим раздел, в нём создадим пять параметров 5-ти типов в таком порядке:
REG_BINARY
REG_DWORD
REG_EXPAND_SZ
REG_MULTI_SZ
REG_SZ
тут *.reg-файл, он довольно маленький.
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\foo]
"0"=hex:
"1"=dword:00000000
"2"=hex(2):00,00
"3"=hex(7):00,00
"4"=""


Теперь выведем имена параметров и номера разделов (во втором столбике- номера типов. Что эти номера значат- будем разбираться):

Python
1
2
3
4
5
6
7
8
9
10
11
import winreg
key_reg = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, "foo")
x = winreg.QueryInfoKey (key_reg)
i = 0
while i != x[1]:
    t = winreg.EnumValue(key_reg, i)
    i += 1
    print(t[0], " ", t[2])
    print()
winreg.CloseKey(key_reg)
print("конец")
Вывод:

Windows Batch file
1
2
3
4
5
6
7
8
9
0   3
 
1   4
 
2   2
 
3   7
 
4   1
Странный второй столбик, да? То есть у меня, если ему верить номера параметров 3,4,2,7,1. А если обратиться к вышеупомянутому списку и по номера найти там читаемые описания типов, то они такие:

REG_DWORD_LITTLE_ENDIAN
REG_DWORD_BIG_ENDIAN
REG_DWORD
REG_MULTI_SZ
REG_BINARY
Совсем не те типы и не в том порядке. Я вообще говоря, предполагал, что первой будет цифра 1 (или 0, если нумерация с ноля идёт) потому, что в списке по ссылке REG_BINARY идёт первым. Но никак не третьим.

То ли питоновцы неудачно шутят, то ли я что не так делаю. Помогите разобраться, друзья! Спасибо, кто откликнется.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2017, 19:23
Ответы с готовыми решениями:

Как считать из реестра значение параметра, который имеет тип REG_EXPAND_SZ?
Друзья! Тип REG_EXPAND_SZ в реестре это очень хитрый тип,называется "Расширяемый строковый параметр". То есть он может быть строкой и...

Как программно задать доступный список значений и изменить тип параметра
Всем привет! Платформа 1С:Предприятие 8.3, конфигурация редактированная типовая, режим управляемый. Создаю отчет на СКД. Возникла...

Как программно определить тип формы справочника
Как определить, с какой формой в данный момент работает пользователь: формой элемента или формой группы? В справочнике номенклатура я...

1
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
04.04.2017, 20:29
kravam, эта цифра - не порядковый номер типа в приведенном в документации списке, а его числовое значение
Python
1
2
3
4
5
6
7
8
9
10
11
12
import winreg
 
 
types = '''REG_BINARY
REG_DWORD
REG_EXPAND_SZ
REG_MULTI_SZ
REG_SZ'''.splitlines()
 
 
for typ in types:
    print('{:16}{}'.format(typ, winreg.__dict__[typ]))
Code
1
2
3
4
5
REG_BINARY      3
REG_DWORD       4
REG_EXPAND_SZ   2
REG_MULTI_SZ    7
REG_SZ          1
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2017, 20:29
Помогаю со студенческими работами здесь

Как можно программно определить тип поля в dbf?
Подскажите пожалуйста как можно программно определить тип поля в dbf(Type и Length Decimals).

Как программно можно определить тип кодовой страницы?
Добрый день всем! Проблема: Программа имеет интерфейс на национальном языке (казахский язык) надписи которого сохранены в СУБД. Для...

Как вы шаблонном классе определить контейнер, тип которого совпадает с именем параметра шаблона?
собсно template <class T> class perestanovki { public: T<int> v; }; int main () {

Сценарий, обеспечивающий чтение из реестра содержимого любого раздела, параметра и значения параметра
Помогите написать сценарий, обеспечивающий чтение из реестра содержимого любого раздела, параметра и значения параметра. Заранее...

Как получить путь из параметра реестра по умолчанию?
Возникла необходимость получить путь из реестра параметра (По умочанию) и копировать по этому пути файл. была идея сделать так: @echo...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru