Я нашел источник моей проблемы.
Чтобы TieRegistry
хорошо работал на 64-битной Windows и имел доступ к правильному кусту реестра, мы использовали решение , предложенное Тони Б. Окусанья (также цитируемое здесь ). Однако это решение добавляет к параметру доступа и KEY_WOW64_64KEY
, и KEY_WOW64_32KEY
, что не логично - либо вы хотите получить доступ к 64-битному реестру и использовать KEY_WOW64_64KEY
, либо вы хотите 32-битный реестр и использовать KEY_WOW64_32KEY
. Использование обоих не имеет никакого смысла.
Тем не менее, в предыдущих версиях Windows, а также Windows 7 , кажется, что когда RegOpenKeyEx
замечает, что флаг KEY_WOW64_64KEY
установлен в параметре access
, он использует 64 реестр и игнорирует флаг KEY_WOW64_32KEY
. Windows Server 2008 R2 , с другой стороны, не игнорирует флаг KEY_WOW64_32KEY
, и, если установлены оба флага, открытие раздела реестра завершается неудачно, и Win32API::Registry.regLastError
возвращает ошибку The parameter is incorrect
.
Удаление |KEY_WOW64_32KEY
из нашего измененного TieRegistry.pm
решило проблему и заставило наше приложение снова работать.
С уважением,
splintor