Compartir a través de


Rutinas de la biblioteca de Run-Time del Registro

Para manipular las entradas del Registro, los controladores pueden llamar a las rutinas RtlXxxRegistryXxx , que proporcionan una interfaz más sencilla que las rutinas zwxxxkey . Al hacerlo, no es necesario que el controlador abra y cierre los controladores; en su lugar, el controlador hace referencia a las claves por nombre.

Los parámetros RelativeTo y Path se pasan a cada rutina RtlXxxRegistryXxx . Si RelativeTo es RTL_REGISTRY_ABSOLUTE, Path especifica la ruta de acceso completa de la clave, empezando por la raíz \Registry . Si RelativeTo es RTL_REGISTRY_HANDLE, Path es realmente un identificador abierto. Valores adicionales RTL_REGISTRY_XXX para RelativeTo especifican las rutas de acceso de raíces comunes para la clave; en estos casos, Path especifica la ruta de acceso relativa a esa raíz. Por ejemplo, RTL_REGISTRY_USER requiere que Path sea relativa a la configuración del registro del usuario actual. (Este valor equivale a especificar HKEY_CURRENT_USER en una aplicación en modo de usuario). Para obtener una descripción de todos los valores RTL_REGISTRY_XXX , consulte RtlCheckRegistryKey.

En la tabla siguiente se enumeran las operaciones que los controladores pueden realizar llamando a las rutinas RtlXxxRegistryXxx .

Operación Rutina RtlXxxRegistryXxx para llamar

Creación de una clave del Registro

RtlCreateRegistryKey

Comprobación de si existe una clave del Registro

RtlCheckRegistryKey

Examen de uno o varios valores de clave del Registro

RtlQueryRegistryValues

Escribir un valor de clave del Registro

RtlWriteRegistryValue

Eliminación de un valor de clave del Registro

RtlDeleteRegistryValue

En el ejemplo de código siguiente se muestra cómo establecer ValueName para \Registry\Machine\System\KeyName en un valor ULONG de 0xFF. Compare este ejemplo con el correspondiente en la sección Rutinas de objeto de clave del Registro .

NTSTATUS status;
ULONG data = 0xFF;

status = RtlWriteRegistryValue(RTL_REGISTRY_ABSOLUTE,
                               (PWCSTR)L"\\Registry\\Machine\\System\\KeyName",
                               (PWCSTR)L"ValueName",
                               REG_DWORD,
                               &data,
                               sizeof(ULONG));

Aunque se escriben menos líneas de código al usar las rutinas RtlXxxRegistryXxx en lugar de las rutinas ZwXxxKey , estas últimas son necesarias para realizar determinadas operaciones. Por ejemplo, no existe ninguna rutina RtlXxxRegistryXxx que corresponda a ZwEnumerateKey.

Si realiza varias operaciones en la misma clave, las rutinas ZwXxxKey son más eficaces, puede usar el mismo identificador abierto para cada operación. En cambio, las rutinas RtlXxxRegistryXxx abren y cierran un nuevo identificador para cada operación.