Что нового

Возвращение шестнадцатеричного значение ключа реестра

k790

Новичок
Сообщения
239
Репутация
1
Здравствуйте, а как вернуть шестнадцатеричное значение ключа в реестре, возвращается десятичное?
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
InnI [?]
Преобразовать десятичное в шестнадцатиричное при помощи функции
не подходит, объясню почему
программа берёт значение из реестра, для примера:
Код:
$Key_2_n = "HKCU\Software\Microsoft\Windows\CurrentVersion\policies\Explorer"
$Key_2_v = "NoDriveTypeAutoRun"
$Key_2_r = RegRead($Key_2_n, $Key_2_v)

MsgBox(0, "", $key_2_r)
- в ответ 255

Код:
$Key_2_n = "HKCU\Software\Microsoft\Windows\CurrentVersion\policies\Explorer"
$Key_2_v = "NoDriveTypeAutoRun"
$Key_2_r = RegRead($Key_2_n, $Key_2_v)

MsgBox(0, "", hex($key_2_r))
- возвращает длинное число, хотя

Код:
MsgBox(0, "", hex(255))
- равно 0xFF (с нулями), вот 0xFF мне и надо добиться


Получилось добиться нужного результата, но он не совсем правильный:
Код:
$Key_2_n = "HKCU\Software\Microsoft\Windows\CurrentVersion\policies\Explorer"
$Key_2_v = "NoDriveTypeAutoRun"
$Key_2_r = RegRead($Key_2_n, $Key_2_v)

MsgBox(0, "", hex(BitOR($Key_2_r,0)))
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
InnI
Ничего не понимаю, почему не работало без этой ф-ии?


Добавлено:
Сообщение автоматически объединено:

Насколько я понимаю - это и есть решение?
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
InnI [?]
сли вас устраивает результат, то почему бы и нет?
Хоть я и пишу простые и не всегда правильные программы (исходный код), но хочу чтобы он был как можно лучше!
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Проверьте какой тип имеет параметр "NoDriveTypeAutoRun" в реестре. Должен быть REG_DWORD. Если так, то все должно работать без Int().
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Начиная с версии 3.3.8.0 Hex() воспринимает тип Double и возвращает его шестнадцатеричное представление. Но, по непонятным мне причинам, RegRead() возвращает в случае REG_DWORD именно вещественный тип. Отсюда и непонятки. В этом случае все правильно, нужно привести переменную к целому типу - Int().
 
Верх