Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
https://drive.google.com/open?id...6Igg5JrhtRKUDgXI
Длл закинуть в папку с кибор.
Будьте осторожнее при изменении/удалении параметров реестра.
Список функций (Отобразить)regcreatekey - создать ключ.
regdeletekey - удалить указанный ключ.
regcountkey - возвращает количество ключей в ветке.
regmaxlenkey - возвращает максимальную длину ключа в ветке.
regenumkey - возвращает в массив имена всех ключей в ветке.
regenumvalue - возвращает в массив имена всех параметров ключа.
reggettypevalue - возвращает тип параметра.
regreadvalue - прочитать значение параметра.
regwritevalue - записать значение параметра. Параметры те же что для regread.
regdeletevalue - удалить указанный параметр.
Параметры функций (Отобразить)regcreatekey(<Раздел>, <Путь> )
regdeletekey(<Раздел>, <Путь>, <Ключ> )
regcountkey(<Раздел>, <Путь> )
regmaxlenkey(<Раздел>, <Путь> )
regenumkey(<Раздел>, <Путь>, <Адрес двухмерного массива char>, <Первая размерность массива>, <Вторая размерность массива> )
regenumvalue(<Раздел>, <Путь>, <Адрес двухмерного массива char>, <Первая размерность массива>, <Вторая размерность массива> )
reggettypevalue(<Раздел>, <Путь>, <Параметр> )
regreadvalue(<Раздел>, <Путь>, <Параметр>, <Тип данных>, <Адрес куда получить результат>, [Сколько байт доступно для записи] )
regwritevalue(<Раздел>, <Путь, <Параметр>, <Тип данных>, <Адрес откуда записывать>, [Сколько байт записать] )
regdeletevalue(<Раздел>, <Путь>, <Параметр> )
Первые два параметра у всех функций одинаковые:
Первый обозначает раздел реестра, может быть одно из:
"HKLM" или "HKEY_LOCAL_MACHINE"
"HKU" или"HKEY_USERS"
"HKCU" или"HKEY_CURRENT_USER"
"HKCR" или"HKEY_CLASSES_ROOT"
"HKCC" или"HKEY_CURRENT_CONFIG"
Если нужен флаг KEY_WOW64_32KEY или KEY_WOW64_64KEY (пояснение ниже), то добавить 32 или 64:
"HKLM32" или "HKEY_LOCAL_MACHINE32"
"HKLM64" или "HKEY_LOCAL_MACHINE64"
остальные аналогично.
Флаг KEY_WOW64_64KEY - на 64 разрядной ОС будет получать доступ к 64 - разрядному представлению реестра.
Флаг KEY_WOW64_32KEY - на 64 разрядной ОС будет получать доступ к 32 - разрядному представлению реестра.
Пояснение:
Указав путь HKEY_LOCAL_MACHINE\SOFTWARE\Google, при HKLM32 функции будут обращаться к ветке HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google, т. е. к ветке где записаны ключи и параметры 32х битных приложений, а при HKLM64 обращение будет к HKEY_LOCAL_MACHINE\SOFTWARE\Google.
Второй параметр путь к нужному ключу.
Тип данных, одно из значений:
#define REG_SZ 1 // строка
#define REG_EXPAND_SZ 2 // строка
#define REG_BINARY 3 // бинарные данные
#define REG_DWORD 4 // число 32 бита
#define REG_MULTI_SZ 7 // строка юникод
#define REG_QWORD 11 // число 64 бита
Для чтения/записи числа (REG_DWORD или REG_QWORD) передавать адрес переменной int или double.
Для строки адрес массива char.
Коды ошибок (Отобразить)CODE:В случае успеха функции возвращают 1 или количество параметров/байт, которые вернула та или иная функция
В случае ошибки:
-1 - раздел реестра указан неверно.
-2 - путь или ключ не найден или указан не тот тип данных (regreadvalue).
Примеры (Отобразить)CODE:// получить количество ключей в HKEY_LOCAL_MACHINE\HARDWARE
external(INT, "regcountkey", "regcountkey", pathfolder()+"Regedit.dll");
int count_key=regcountkey("HKLM", "HARDWARE");
messagebox("Всего ключей: "+format(count_key));
CODE:// получить максимальную длину ключа в HKEY_LOCAL_MACHINE\HARDWARE
external(INT, "regmaxlenkey", "regmaxlenkey", pathfolder()+"Regedit.dll");
int max_len_key=regmaxlenkey("HKLM", "HARDWARE");
messagebox("Максимальная длина имени ключа: "+format(max_len_key)+" символов");
CODE:// получить имена всех ключей в HKEY_LOCAL_MACHINE\HARDWARE
external(INT, "regenumkey", "regenumkey", pathfolder()+"Regedit.dll");
char KEY[100][999];
int count_key=regenumkey("HKLM", "HARDWARE", address(#KEY[0][0]), sizearray(KEY), sizearray(KEY[]));
messagebox("Всего ключей: "+format(count_key));
if(count_key>0)
{
for(int i=0; i<count_key; i++)messagebox("Имя ключа: "+format(#KEY[i][0]));
}
CODE:// получить имена всех параметров HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System
external(INT, "regenumvalue", "regenumvalue", pathfolder()+"Regedit.dll");
char KEY[100][999];
int count_key=regenumvalue("HKLM", "HARDWARE\DESCRIPTION\System", address(#KEY[0][0]), sizearray(KEY), sizearray(KEY[]));
messagebox("Всего параметров: "+format(count_key));
if(count_key>0)
{
for(int i=0; i<count_key; i++)messagebox("Имя параметра: "+format(#KEY[i][0]));
}
CODE:// получить тип параметра
#define REG_SZ 1
#define REG_EXPAND_SZ 2
#define REG_BINARY 3
#define REG_DWORD 4
#define REG_MULTI_SZ 7
#define REG_QWORD 11
external(INT, "reggettypevalue", "reggettypevalue", pathfolder()+"Regedit.dll");
int type=reggettypevalue("HKLM", "HARDWARE\DESCRIPTION\System", "VideoBiosVersion");
messagebox("Тип параметра: "+format(type));
if(type==REG_SZ)messagebox("REG_SZ ");
if(type==REG_EXPAND_SZ)messagebox("REG_EXPAND_SZ ");
if(type==REG_BINARY)messagebox("REG_BINARY ");
if(type==REG_DWORD)messagebox("REG_DWORD");
if(type==REG_MULTI_SZ)messagebox("REG_MULTI_SZ ");
if(type==REG_QWORD)messagebox("REG_QWORD ");
CODE:// получить значение параметра
#define REG_SZ 1
#define REG_DWORD 4
external(INT, "regreadvalue", "regreadvalue", pathfolder()+"Regedit.dll");
int x;
int result=regreadvalue("HKLM", "HARDWARE\DESCRIPTION\System\CentralProcessor\0", "~MHz", REG_DWORD, address(#x));
//messagebox(result);
messagebox("Частота процессора: "+format(x));
char x3[999];
int result3=regreadvalue("HKLM", "HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString", REG_SZ, address(#x3[0]), sizearray(x3));
//messagebox(result3);
messagebox(format(#x3[0])); |