Como exportar um registro de HIVE (NTUSER.DAT) no PowerShell

3

Para resolver um problema de inchaço do registro causado pelos drivers de impressão da Samsung, estou precisando encontrar uma maneira de exportar a seção de registro NTUSER.DAT de perfil móvel de um usuário enquanto estiver no PowerShell. Carregar e exportar um registro do NTUSER.DAT O Hive funciona no REGEDIT, mas até agora não encontrei uma maneira de fazer isso no PowerShell.

O script do PowerShell em que estou trabalhando é capaz de carregar o Registro remoto, remover chaves e descarregar. Isso não fornece uma maneira para espaço livre / vazio a ser removido do arquivo Hive do Registro. Quando manualmente fazendo isso no Regedit eu pude levar arquivos NTUSER.DAT inchados com mais de 150.000 KB e exportá-los como um novo NTUSER_Clean.DAT Registry Hive todo o caminho até 780 KB (para um usuário com relativamente poucas configurações) .

Exemplo de código do PowerShell:

Write-Host "Attempting to load the User Roaming Profile Registry HIVE (NTUSER.DAT)."
#Write-Host $strRemoteLocation
reg load "HKU\$strKeyName" $strRemoteLocation
Write-Host $strLine

Write-Host "Attempting to clean the Registry HIVE of Samsung SSPrint Keys."
Clean_Key $strKeyName "spd__"
Clean_Key $strKeyName "spe__"
Clean_Key $strKeyName "ssp6m"
Write-Host $strLine

# Export Registry HIVE to NTUSER_Clean.DAT
Write-Host "This section would export the Registry HIVE to a new file."
Write-Host "At this point I'm not sure how to do this."
Write-Host $strLine

# Unload the Registry HIVE
Write-Host "Attempting to unload the Registry HIVE."
[gc]::collect()
start-sleep -s 3
reg unload "HKU\$strKeyName"

Até agora eu não encontrei uma maneira de usar o reg (reg.exe) para exportar como um arquivo Hive do Registro. O argumento "reg EXPORT" gera apenas arquivos .reg até onde eu sei.

    
por Arachnid 11.02.2014 / 20:51

1 resposta

2

O uso de "reg export" não é o que você deseja usar para exportar uma seção de registro. Eu não sabia, mas a opção "reg save" permite que você realmente salve um arquivo do Registro Hive, como o NTUSER.DAT.

Encontrou um artigo da Microsoft sobre opções reg.exe e testou usando "reg save": link

Código do PowerShell com reg save sendo usado:

Write-Host "Attempting to load the User Roaming Profile Registry HIVE (NTUSER.DAT)."
#Write-Host $strRemoteLocation
reg load "HKU\$strKeyName" "$strRemoteHiveSourcePath\NTUSER.DAT"
Write-Host $strLine

Write-Host "Attempting to clean the Registry HIVE of Samsung SSPrint Keys."
Clean_Key $strKeyName "spd__"
Clean_Key $strKeyName "spe__"
Clean_Key $strKeyName "ssp6m"
Write-Host $strLine

# Export Registry HIVE to NTUSER_Clean.DAT
Write-Host "Attempt to save a new version of the Registry Hive."
reg save "HKU\$strKeyName" "$strRemoteHiveSourcePath\NTUSER_Clean.DAT"
Write-Host $strLine

# Unload the Registry HIVE
Write-Host "Attempting to unload the Registry HIVE."
[gc]::collect()
start-sleep -s 3
reg unload "HKU\$strKeyName"
Write-Host $strLine

# Verify that the NTUSER_Clean.DAT is found.
# If found rename NTUSER.DAT to NTUSER_OLD.DAT and then rename NTUSER_Clean.DAT to NTUSER.DAT
# Clean up NTUSER_OLD.DAT once verified that the new NTUSER.DAT is in place.
if (Test-Path "$strRemoteHiveSourcePath\NTUSER_Clean.DAT") {
    Write-Host "The Exported Registry Hive (NTUSER_Clean.DAT) was found."
    Write-Host $strLine

    Write-Host "Renaming the compacted NTUSER.DAT file to NTUSER_OLD.DAT."
    Rename-Item "$strRemoteHiveSourcePath\NTUSER.DAT" "NTUSER_OLD.DAT"

    Write-Host "Renaming the compacted NTUSER_Clean.DAT file to NTUSER.DAT."
    Rename-Item "$strRemoteHiveSourcePath\NTUSER_Clean.DAT" "NTUSER.DAT"

    # Verify we actually have a NTUSER.DAT file before removing the OLD version.
    if (Test-Path "$strRemoteHiveSourcePath\NTUSER.DAT") {
        Write-Host "Deleting the original NTUSER_OLD.DAT"
        Remove-Item "$strRemoteHiveSourcePath\NTUSER_OLD.DAT"
    }

}else {
   Write-Host "The Exported Registry Hive was NOT found."
   Write-Host "The NTUSER.DAT was NOT compacted."
} 
Write-Host $strLine
    
por 11.02.2014 / 21:46