Process Monitor non si avvia su un computer a 64 bit


23

Quando provo ad avviare Process Monitor da SysInternals su alcune macchine Windows 7 a 64 bit, il processo non si avvia. Non c'è nessun messaggio di errore. Faccio doppio clic e non succede nulla. Altri computer Windows 7 a 64 bit funzionano correttamente. Qualche idea?


Ho lo stesso problema e posso eseguire Process Monitor in modalità 32 bit con l'opzione della riga di comando procmon.exe /Run32. Tuttavia, non supporta l'acquisizione in questa modalità.
Jirkamat,

@jirkamat Non funziona qui :(
Zero3

Risposte:


33

Ecco cosa ho trovato. Procmon.exe a 32 bit contiene l'exe a 64 bit al suo interno come risorsa binaria. All'avvio di exe a 32 bit, estrae la versione a 64 bit in un file nascosto chiamato Procmon64.exe e quindi lo esegue. Per qualche motivo questo processo non riesce su alcune installazioni di Windows 7.

Sono riuscito a estrarre l'exe a 64 bit usando Visual Studio 2010.

  1. Apri Visual Studio e apri il file Procmon.exe usando il menu File-> Apri-> File ...
  2. Nell'albero delle risorse, espandere il nodo "BINRES"
  3. Fare clic con il tasto destro sul nodo 1308 e selezionare Esporta ...
  4. Denominare la risorsa esportata Procmon-64.exe e salvare
  5. Esegui l'exe estratto

Non nominare l'exe Procmon64.exe estratto (nessun trattino) perché Procmon a 32 bit tenterà di eliminarlo se ne ha la possibilità.

Se non si dispone di Visual Studio, utilizzare un estrattore di risorse eseguibile di Windows come ResourcesExtract - http://www.nirsoft.net/utils/resources_extract.html


2
È interessante che tu abbia trovato una soluzione, ma sarei molto più interessato al motivo per cui dovresti persino farlo.
Zoredache,

Vorrei trovare anche la causa principale, ma il debug di un processo nativo senza simboli non vale la pena. Soprattutto uno integrato con il sistema operativo come Process Monitor.
Ryan Michela,

Estraendo l'ex 64 bit di ProcMon in EXE autonomo ed eseguendo questo exe risolve questo problema per me! ProcMon funziona bene.
Jirkamat,

4
Una volta, mentre facevo doppio clic pigramente su Procmon.exe più e più volte frustrato, ho visto il flash nascosto Procmon64.exe in Esplora risorse. Questo mi ha dato l'idea che la versione a 64 bit veniva estratta dalla versione a 32 bit. A seguito di questo sospetto, mi sono spinto ad aprire l'ex a 32 bit per esaminare le sue risorse e ho trovato uno che era ordini di grandezza più grandi degli altri. Ho estratto la risorsa e l'ho salvata come .exe. Ecco, era il Process Monitor a 64 bit mancante.
Ryan Michela,

1
Dato che sto riscontrando questo problema con molti programmi di Sysinternal, in particolare tutti quelli che estraggono una versione a 64 bit (questo è accaduto all'improvviso di recente, non è possibile eseguirne nessuno perché dice che la directory non è scrivibile), ma se esegui l'estrattore di risorse e fai clic su "risorse binarie" o su qualsiasi altra applicazione del sistema interno, puoi sostanzialmente ordinare per dimensione e la più grande sarà l'app. Basta rinominarlo in exe e il gioco è fatto ~
mgrandi

5

Lasciami stravolgere la tua mente. procmon.exe RICHIEDE Servizio di workstation in esecuzione per iniziare. Lo usa per enumerare qualcosa e morirà silenziosamente senza di essa.

Questo non è documentato da nessuna parte e piuttosto fasullo.


1
Sì! Era questo! Questa risposta deve andare in cima.
stesso

Sì, è stato per me. La versione 3.10 non lo richiede, ma la versione 3.20 lo fa. Ci sei riuscito; sbalordire. Dire "piuttosto fasullo" è un eufemismo enorme. Non ho alcun desiderio di gestire quel servizio, quindi sono profondamente deluso da Mark.
Synetech,

2

So che questa discussione è stata un po 'di tempo, ma ho visto questo problema ultimamente e ho notato un altro fattore che potrebbe essere utile. Amministratore giusto. Se accedo come amministratore e lo eseguo, funziona benissimo. Se accedi come non amministratore ed eseguilo, il problema si verifica e il procmon-64 estratto mostra lo stesso problema.


2

Riesco a estrarre ProcMon64.exe con il successivo script Perl inserito ed eseguito nella cartella 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')}
    }
}

Dopo esecuzioni multiple crea decine di copie tutte uguali (lo stesso CRC32)



0

Ho risolto questo problema ricontrollando le mie variabili di ambiente. Puoi verificare %TEMP%se hai mai aggiunto qualcosa all'interno prima. Rimuovere qualsiasi altra cartella tranne Windows Temp e quindi riavviare.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.