O Process Monitor falha ao iniciar em um computador de 64 bits

23

Quando tento iniciar o Process Monitor a partir do SysInternals em algumas máquinas com Windows 7 de 64 bits, o processo falha ao iniciar. Não há nenhuma mensagem de erro. Clico duas vezes e nada acontece. Outros computadores com Windows 7 de 64 bits funcionam bem. Alguma ideia?

Ryan Michela
fonte
Em ter o mesmo problema, e eu posso executar o Process Monitor no modo de 32 bits com a opção de linha de comando procmon.exe /Run32. No entanto, ele não suporta captura neste modo.
jirkamat
@jirkamat Não funciona aqui :(
Zero3

Respostas:

33

Aqui está o que eu encontrei. O Procmon.exe de 32 bits contém o exe de 64 bits dentro dele como um recurso binário. Quando o exe de 32 bits é iniciado, ele extrai a versão de 64 bits para um arquivo oculto chamado Procmon64.exe e o executa. Por alguma razão, esse processo falha em algumas instalações do Windows 7.

Consegui extrair o exe de 64 bits usando o Visual Studio 2010.

  1. Abra o Visual Studio e abra o arquivo Procmon.exe usando o menu Arquivo-> Abrir-> Arquivo ...
  2. Na árvore de recursos, expanda o nó "BINRES"
  3. Clique com o botão direito do mouse no nó 1308 e selecione Exportar ...
  4. Nomeie o recurso exportado Procmon-64.exe e salve
  5. Execute o exe extraído

Não nomeie o exe extraído Procmon64.exe (sem hífen) porque o Procmon de 32 bits tentará excluí-lo se houver chance.

Se você não possui o Visual Studio, use um extrator de recursos executáveis ​​do Windows, como ResourcesExtract - http://www.nirsoft.net/utils/resources_extract.html

Ryan Michela
fonte
2
É interessante que você tenha encontrado uma solução alternativa, mas eu estaria muito mais interessado em saber por que você precisaria fazer isso.
Zoredache
Eu gostaria de encontrar a causa raiz também, mas a depuração de um processo nativo sem símbolos simplesmente não vale o esforço. Especialmente um como integrado ao SO como Process Monitor.
quer
Extrair o exe de 64 bits do ProcMon para EXE autônomo e executar esse exe resolve esse problema para mim! O ProcMon está funcionando bem.
jirkamat
4
Certa vez, ao clicar duas vezes em Procmon.exe ociosamente, frustrado, vi o Procmon64.exe oculto piscar no Windows Explorer. Isso me deu a pista de que a versão de 64 bits estava sendo extraída pela versão de 32 bits. Após esse palpite, eu abri o exe de 32 bits para examinar seus recursos e eu encontrei um que era de magnitude maior que os outros. Eu extraí o recurso e o salvei como um .exe. Eis que era o Monitor de Processo de 64 bits que faltava.
Ryan Michela
1
Como estou tendo esse problema com muitos programas do Sysinternal, especificamente todos os que extraem uma versão de 64 bits (isso aconteceu de repente muito recentemente, não é possível executar nenhum deles, porque diz que o diretório não é gravável), mas se você executar o extrator de recursos e clicar em 'ativos binários' ou em qualquer aplicativo do sysinternal, poderá classificar basicamente por tamanho, e o maior deles será o aplicativo. Apenas renomeá-lo para exe e temos que ir ~
mgrandi
5

Deixe-me explodir sua mente. procmon.exe SOLICITA serviço da estação de trabalho em execução para iniciar. Ele o usa para enumerar algo e morrerá silenciosamente sem ele.

Isso não está documentado em nenhum lugar e é muito falso.

Rasz_pl
fonte
1
Sim! Era isso! Esta resposta precisa ir para o topo.
se
Sim, isso fez por mim. A versão 3.10 não requer, mas a versão 3.20 exige. Você conseguiu; mente soprada. Dizer "bonito falso" é um enorme eufemismo. Não desejo executar esse serviço, por isso estou muito decepcionado com Mark.
Synetech
2

Eu sei que esse segmento já faz um tempo, mas acabei de ver esse problema recentemente e notei outro fator que pode ser útil. Administrador certo. Se eu entrar como administrador e executá-lo, ele funcionará bem. Se efetuar login como não administrador e executá-lo, o problema ocorre e o procmon-64 extraído mostra o mesmo problema.

Cloud Guy
fonte
2

Consigo extrair o ProcMon64.exe com o próximo script Perl colocado e executado na pasta temp.

use File::Copy;

if(fork()==0)
{ system "C:\\SysInternals\\ProcMon.exe"}
else
{  for($i=1;$i<1000;$i++)
    {if(-e 'ProcMon64.exe')
      { copy('ProcMon64.exe',$i.'.exe')}
    }
}

Após múltiplas execuções, ele cria dezenas de cópias, todas iguais (o mesmo CRC32)

Dmitry Pi
fonte
0

ospy é uma alternativa do ProcMon. Você pode tentar solucionar problemas de inicialização procmon com isso.

Justin Dearing
fonte
0

Corrigi esse problema, verificando novamente minhas variáveis ​​de ambiente. Você pode verificar %TEMP%se já adicionou algo dentro antes. Remova qualquer outra pasta, exceto o windows temp e, em seguida, reinicie.

user365886
fonte
-2

Eu usei o Resource Hacker. Extraia 1038 como compartimento. adicione .exe e parece começar.

Erixx Haxx
fonte
O executável não será aberto no Resource Hacker ....
Amalgovinus