Diferenças que executam um programa de C: \ Windows vs. C: \ Windows \ system32

2

Chamar um programa no prompt do windows pelo caminho absoluto do diretório C:\Windows está funcionando, mas chamar esse programa de C:\Windows\System32 me dá erros.

  • C:\Windows>D:\pathtoexe\program.exe - > OK
  • C:\Windows\System32>D:\pathtoexe\myprogram.exe - > Termina sem fazer sua tarefa

O programa lê um arquivo de configuração do diretório atual. O arquivo de configuração existe nos diretórios (Windows e System32). Se eu excluir o arquivo do diretório do Windows, em seguida, chamar o programa do diretório do Windows termina com o mesmo erro como se eu chamá-lo do diretório System32. Não deve haver problemas de acesso a arquivos:

  • C:\Windows>type config.ini - > OK
  • C:\Windows\system32>type config.ini - > OK

O mesmo programa com o mesmo arquivo de configuração no Windows Server 2003 está funcionando para ambos os diretórios!

Como depurar por que não será executado a partir do system32 em 2008?

    
por Christian Ammer 31.08.2012 / 12:07

2 respostas

4

Suponho que você esteja em um sistema operacional de 64 bits e program.exe seja um programa de 32 bits.

Se isso for verdade, coloque o arquivo de configuração no diretório windows\syswow64 . Isso é o que parece um processo de 32 bits como system32 .

Devido à maneira como o Windows inicia processos, eles não herdam diretamente seu diretório de trabalho, mas executam o equivalente a cd durante a inicialização. Portanto, o processo de 32 bits, iniciado no diretório do sistema de 64 bits, na verdade, acaba no diretório do sistema de 32 bits (chamado syswow64 em um cmd de 64 bits ou no Explorer).

    
por 31.08.2012 / 15:01
2

Seu aplicativo é sensível a qual diretório ele é executado devido à espera de determinados arquivos de configuração de arquivos, talvez dlls ou de terceiros, a partir do diretório atual. Gostaria de sugerir o uso do prmon do pstools para determinar os arquivos exatos que estão sendo acessados.

Isso também pode ser um problema de 32 vs 64 bits. Procmon também mostrará isso.

    
por 31.08.2012 / 13:38