Удаленный доступ к реестру

октября 12 2009 by admin in Администрирование

Windows позволяет осуществлять доступ к реестру на удаленных компьютерах почти так же, как и на локальных. Это значительно упрощает разработку ПО, настройка которого может осуществляться дистанционно.
Разработчики Windows действительно упростили удаленный доступ к реестру, позволив использовать для этого те же функции, что и при работе с локальным реестром. Например, RegOpenKeyEx можно применять для открытия разделов как на удаленных компьютерах, так и на локальных. Более того, для работы с удаленным реестром можно использовать RegSetValueEx, RegQuery-ValueEx, RegEmimKey и т. п. Единственное отличие — в получении описателя предопределенных разделов реестра на удаленном компьютере. Эту операцию выполняет функция RegConnectRegistry, объявленная так:
LONG RegConnectRegistry( PTSTR pszMachineName, HKEY hkey, PHKEY phkResult);
Как видите, она довольно проста. В параметр pszMachineName нужно поместить название компьютера, с которым надо соединиться. Кроме того, чтобы указать часть реестра, к которой требуется доступ, в функцию передается один из предопределенных разделов реестра (например, HKEY_LO-CAL_MACHINE или HKEY_USERS). И, наконец, RegConnectRegistry должна получить указатель на переменную типа HKEY, в которой функция сохранит описатель корневого раздела удаленного реестра.
Для получения значений из удаленного реестра можно использовать Reg-QueryMultipleValues. Она похожа на RegQueryValueEx, но может запрашивать сразу несколько значений. RegQueryMultipleValues позволяет сократить сетевой трафик, благодаря передаче сразу нескольких переменных за одну сетевую операцию. Она предназначена не только для работы с удаленным реестром, однако именно в этом деле ее возможности впечатляют. Ведь в промышленности, где пропускная способность сетей очень важна, лишние обращения к сети считаются потерями. RegQueryMultipleValues объявлена так:
LONG RegQueryMultipleValuesC HKEY hkey, PVALENT val.list, DWORD num_vals, PTSTR pszValueBuf, PDWORD dwTotsize);
Параметр valjist служит для передачи в функцию массива структур типа VALENT. Система использует этот массив для поиска получаемых значений и заполняет структуры информацией о каждом из них.