Работа с реестром (registry)



REG-SZ: "registry_path" "string_value"

Устанавливает строковое значение реестра.

Пример:

#( test_reg_sz
NoActive
Action:
    REG-SZ: "HKEY_LOCAL_MACHINE\SOFTWARE\test\first" "test string value"
)#

REG-DWORD: "registry_path" <number>

Устанавливает числовое значение реестра.

DWORD (двойное слово) - одиночное 32-битное значение, восемь шестнадцатеричных цифр.

Пример:

#( test_reg_dword
NoActive
Action:
    REG-DWORD: "HKEY_LOCAL_MACHINE\SOFTWARE\test\second" 16
)#

Существует постфиксный аналог этого слова (его удобно использовать при работе с переменными):

S" HKEY_LOCAL_MACHINE\SOFTWARE\test\first" 16 REG-DWORD 
S" HKEY_LOCAL_MACHINE\SOFTWARE\test\first" first_var @ REG-DWORD 

REG-DELETE-KEY: "registry_path"

Удаляет из реестра указанный ключ и все его подключи.

Пример:

#( test_reg_delete_key
NoActive
Action:
    REG-DELETE-KEY: "HKEY_LOCAL_MACHINE\SOFTWARE\test"
)#

REG-DELETE-VALUE: "registry_path"

Удаляет указанное значение из реестра. Работает и со строковыми и с числовыми значениями.

Пример:

#( test_reg_delete_value
NoActive
Action:
    REG-DELETE-VALUE: "HKEY_LOCAL_MACHINE\SOFTWARE\test\first"
    REG-DELETE-VALUE: "HKEY_LOCAL_MACHINE\SOFTWARE\test\second"
)#

REG-KEY-EXIST? ( a u -- ?)

Постфиксное слово, которое проверяет наличие указанного ключа в реестре. Возвращает TRUE (-1) если ключ существует и FALSE (0) в противном случае.

Пример:

#( test_reg_key_exist
NoActive
Action:
    S" HKEY_LOCAL_MACHINE\SOFTWARE" REG-KEY-EXIST?
    IF
        \ do smth useful
    THEN
)#

<buffer> GET-REG: "registry_path"

Получает и записывает указанное значение из реестра в созданный пользователем буфер.

Строковые значения следует помещать в массивы, а числовые - в переменные.

Примеры:

#( test_get_reg
NoActive
CREATE reg_value 256 ALLOT
Action:
    reg_value GET-REG: "HKEY_LOCAL_MACHINE\SOFTWARE\test\first"
    MSG: "Извлекли строковое значение: %reg_value ASCIIZ>%"
)#

#( test_get_reg1
NoActive
VARIABLE reg_variable
Action:
    reg_variable GET-REG: "HKEY_LOCAL_MACHINE\SOFTWARE\test\second"
    MSG: "Извлекли числовое значение: %reg_variable @%"
)# 

Слово ASCIIZ> разделяет адрес строки с нулем на конце (zero-terminated string) на адрес и счетчик.


Некоторые замечания:

1) Следует отметить, что редактирование реестра (особенно удаление из реестра незнакомых ключей) - это потенциально опасное действие, поэтому рекомендую делать резервную копию реестра перед активными изменениями.

2) Не стоит с помощью nnCron пытаться работать с пользовательской веткой реестра HKEY_CURRENT_USER. nnCron выполняется от имени SYSTEM и не "видит" эту ветку, поскольку в контексте пользователя SYSTEM ветки остальных пользователей располагаются в разделе HKEY_USERS. Под Win2000/XP вы можете воспользоваться словом NAME2SIDS, чтобы сгенерировать SID-строку и с ее помощью получить доступ к пользовательским веткам HKEY_USERS.


Cм. также: