Sysnative no Vista RTM

0

Atualmente, estou escrevendo um script em lote que iniciará processos em um sistema operacional. Esse script em lote é chamado a partir de um aplicativo de teste que é construído e executado como um aplicativo de 32 bits em sistemas operacionais de 32 e 64 bits. O script em lote é escrito da seguinte forma:

set EXE=%1
if exist %WINDIR%\sysnative\%1 ( set EXE=%WINDIR%\sysnative\%1 )
start "" "%EXE%"

Estou usando a variável sysnative para inicializar aplicativos de 64 bits em sistemas operacionais de 64 bits e aplicativos de 32 bits em sistemas operacionais de 32 bits. Eu uso este script em sistemas operacionais do Vista e além. Ele funciona corretamente em todos os sistemas operacionais, exceto o Windows Vista x64 RTM. Quando chamado, recebo um "O aplicativo falhou ao iniciar porque sua configuração lado a lado está incorreta. Consulte o log de eventos do aplicativo para obter mais detalhes."

Eu abri uma linha de comando de 32 bits no Windows Vista x64 RTM e naveguei para C: \ Windows \ sysnative e tentei chamar notepad.exe, calc.exe, etc. de lá e sempre receber o mesmo erro. Eu também tentei desinstalar e reinstalar os Pacotes Redistribuíveis do Microsoft Visual c ++ 2008, mas sem sucesso. Os logs de eventos do aplicativo / segurança / sistema não contêm informações / aviso / mensagens de erro relacionadas a isso. Esse problema é encontrado apenas no Windows Vista x64 RTM. Alguma idéia?

    
por fowlball1010 03.10.2014 / 20:32

2 respostas

1

Você perdeu um tempo de execução do C ++. Execute o prompt de comando (cmd.exe) com direitos de administrador e execute este comando:

SxsTrace Trace -logfile:SxsTrace.etl

Agora, execute o script que causa o erro SideBySide.

Volte para o prompt de comando e pressione ENTER / RETURN para gerar o SxsTrace.etl. Agora digite isto:

sxstrace Parse -logfile:SxSTrace.etl -outfile:SxSTrace.txt

Agora abra o rastreio SxSTrace.txt e veja qual runtime do VC ++ está faltando.

Se você não tiver certeza, faça o upload do SxSTrace.txt completo para um serviço de nuvem / pastebin e poste um link aqui.

    
por 04.10.2014 / 07:49
-1

It only occurs on this Vista machine.

A variável SysNative está disponível no Vista de 64 bits, então parece que o WinSxS do seu Vista está corrompido.

A solução mais fácil para um WinSxS confuso é apenas reinstalar o sistema operacional a partir do zero.

Uma alternativa é apropriar-se forçosamente do WinSxS e de seus arquivos e, em seguida, copiar os arquivos de uma máquina de 64 bits do Vista, alterar a propriedade e executar um SFC /scannow .

Mais detalhes sobre a realização dessas ações estão fora do escopo desta questão.

    
por 03.10.2014 / 20:55