Registro de exportación excluyendo específico por nombre


1

Debo exportar un conjunto de claves de registro solo si el nombre de clave no incluye una palabra específica

ex:

reg export "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Print \ Monitors \ Standard TCP / IP Port \ Ports"

si el nombre de tcp / ip port contiene "Session 2", ignore y salte a la siguiente

Tnx por ayuda


La única sintaxis válida que conozco es REG EXPORT RegKey FileName. Sin filtros, sin modificaciones disponibles. Por lo tanto, el archivo de salida de postproceso (la extensión predeterminada es .reg )
JosefZ


Esto no es un duplicado. Aquí se trata de exportar una rama del Registro completa, pero excluyendo algunas claves. (En mi caso, me gustaría hacer una copia de seguridad del conjunto. HKCU\Software, pero excluyendo algunas claves que son muy grandes e inútiles de copia de seguridad)
Gras Double

Respuestas:


0

He trabajado en un script PHP para esto. Lee un archivo de exportación del registro, como lo produce Regedit, y produce un archivo similar, pero con las claves de su elección filtradas.

La devolución de llamada recibe la clave de registro caminada como un parámetro, y debe regresar true Si esta clave tiene que ser filtrada.

function filter_reg_file($inputFile, $outputFile, $callback) {

    $content = file_get_contents($inputFile);

    $content = mb_convert_encoding($content, 'UTF-8', 'UCS-2LE');
    $content = preg_replace('@^(\xEF\xBB\xBF)?Windows Registry Editor Version 5\.00\r\n\r\n@', '', $content);

    $lines = explode("\r\n", $content);
    $skipping = false;
    $result = [];

    foreach ($lines as $line) {

        if (substr($line, 0, 1) === '[') {
            $keyName = substr($line, 1, -1);
            $skipping = $callback($keyName);
        }

        if (!$skipping) {
            $result[] = $line;
        }
    }

    $result = "Windows Registry Editor Version 5.00\r\n\r\n" . implode("\r\n", $result);
    $result = "\xFF\xFE" . mb_convert_encoding($result, 'UCS-2LE', 'UTF-8');

    file_put_contents($outputFile, $result);
}


Aquí hay una muestra de uso. Tenga especial cuidado al filtrar la clave raíz (por ejemplo, BagMRU ) y las teclas secundarias (por ejemplo, BagMRU\foo\bar ).

filter_reg_file('HKCU_Software.reg', 'HKCU_Software__filtered.reg', function ($key) {

    $keysToSkip = [
        'HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU',
        'HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags',
    ];

    foreach ($keysToSkip as $keyToSkip) {
        if ($key === $keyToSkip || strpos($key, $keyToSkip.'\\') === 0) {
            return true;
        }
    }

    return false;
});
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.