A importação de Regedit.exe não consegue captar o campo “text”

3

Estou migrando do Windows XP para o Windows 7. Uso software de banco de dados (Aginity Workbench), que permite ao usuário salvar consultas comuns chamadas "Snippets de código". Esses snippets são armazenados no registro: HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets

As entradas do registro são estruturadas da seguinte maneira, onde um campo "Texto" armazena a consulta real:

Umapartedotexto.regtemestaaparência:

WindowsRegistryEditorVersion5.00

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets]

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ]

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ]"Trigger"="sf" "Text"="select *

from

limit 1000;

" "CaretPosition"=dword:00000010

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ] "Trigger"="rollnode" "Text"="SELECT mom.varReportId, mom.nodeId, mom.rollupTypeId, roll.riskFactorGroup, roll.effectType, mom.VAR, mom.mean FROM Moments mom, RollupTypeMapping roll WHERE mom.businessDate = (select businessDate from SysConfig) AND roll.businessDate = mom.businessDate AND mom.nodeId = 260591 AND mom.varReportId = 'DGV_BT_1D_CAD' AND roll.rollupTypeId = mom.rollupTypeId ORDER BY mom.nodeId, roll.rollupTypeId" "CaretPosition"=dword:0000018c

... e do Notepad ++, mostrando os detalhes da quebra de linha:

Eutenteimigrarossnippetspor:

  1. noregedit.exenoXP>>exportarramificação"Trechos de código"
  2. no regexit.exe no W7 > > importar o arquivo .reg eu salvo em # 1

O Windows exibe uma mensagem dizendo que o registro foi atualizado com sucesso e, na verdade, posso ver novas entradas no registro. No entanto, quase todas as novas entradas estão sem o campo crítico "Texto". Por exemplo, aqui está o registro importante "10" acima:

Alguémpodeajudaraexplicarcomoresolverisso?

EunoteiexatamenteumregistroquepareciaconterocampoTextoefoipreenchidocorretamentenoW7.Eunãotenhoidéiadoqueédiferentesobreeste,ouporqueoWindowstratariadeformadiferente.Masissomemostraumexemplopráticoequeaimportaçãodeveserpossível.

WindowsXP

Windows7

    
por Roberto 23.06.2015 / 20:39

2 respostas

2

São os retornos de carro / novas linhas. O importador do Registro não gosta de importar coisas com caracteres EOL / newlines / CR (mesmo que você possa exportá-lo com êxito). Você pode verificar essa teoria procurando uma seção do arquivo .reg que contém o arquivo TEXT que importou DID (o exemplo TO_CHAR), eu aposto que não tem retornos de carro.

Para contornar:

  • Exportar a chave de registro desejada (por exemplo: "HKEY_CURRENT_USER \ MyTest"): %código%
  • Em seguida, Salvar a chave em formato binário: reg export HKEY_CURRENT_USER\MyTest Test.reg
  • Em seguida, Importar o arquivo .Reg (no novo computador). %código%
  • Em seguida, Restaurar a versão binária do overtop: reg save HKEY_CURRENT_USER\MyTest Test.bin

Você precisa fazer as duas coisas porque "restaurar" não recria as chaves, portanto, você usa os arquivos .Reg exportados / importados para fazer essa parte e, em seguida, restaura os dados binários (incluindo novos caracteres de linha etc.) chaves existentes.

Atenção: Eu não testei totalmente isso, pois não tenho XP disponível para mim.

    
por 23.06.2015 / 21:25
2

O problema são as quebras de linha. Se você corrigir isso, ele será importado com sucesso.

Em primeiro lugar, você está perdendo as quebras de linha:

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ] "Trigger"="sf" "Text"="select *

Isso deve ser:

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ] 
"Trigger"="sf" 
"Text"="select *    ...

Em segundo lugar, você tem quebras de linha extras:

"Text"="select *

from

limit 1000;

"

Você pode desejar isso como um snippet, mas de acordo com este artigo antigo no MSDN , um espaço em branco line identifica o início de um novo caminho de registro. Pode ser que a Aginity tivesse algum esquema para codificar quebras de linha nessas chaves de registro que foram perdidas no processo de exportação; De qualquer forma, se você remover as linhas em branco, elas serão importadas com sucesso.

Aqui está a versão "fixa" do arquivo .reg que você postou:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets]

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ]

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ] 
"Trigger"="sf" 
"Text"="select * from limit 1000;" 
"CaretPosition"=dword:00000010

[HKEY_CURRENT_USER\Software\Aginity\NetezzaWorkbench\QueryAnalyzer\CodeSnippets\NZ] 
"Trigger"="rollnode" 
"Text"="SELECT mom.varReportId, mom.nodeId, mom.rollupTypeId, roll.riskFactorGroup, roll.effectType, mom.VAR, mom.mean FROM Moments mom, RollupTypeMapping roll WHERE mom.businessDate = (select businessDate from SysConfig) AND roll.businessDate = mom.businessDate AND mom.nodeId = 260591 AND mom.varReportId = 'DGV_BT_1D_CAD' AND roll.rollupTypeId = mom.rollupTypeId ORDER BY mom.nodeId, roll.rollupTypeId" 
"CaretPosition"=dword:0000018c
    
por 23.06.2015 / 21:29