Process Monitor не запускается на 64-битном компьютере


23

Когда я пытаюсь запустить Process Monitor из SysInternals на некоторых 64-битных компьютерах с Windows 7, процесс не запускается. Там нет сообщения об ошибке. Я дважды щелкаю, и ничего не происходит. Другие 64-битные компьютеры с Windows 7 работают нормально. Любые идеи?


У меня та же проблема, и я могу запустить Process Monitor в 32-битном режиме с опцией командной строки procmon.exe /Run32. Тем не менее, он не поддерживает захват в этом режиме.
Джиркамат

@jirkamat здесь не работает :(
Zero3

Ответы:


33

Вот что я нашел. 32-битный Procmon.exe содержит 64-битный exe-файл внутри него как двоичный ресурс. Когда запускается 32-битный exe-файл, он извлекает 64-битную версию из скрытого файла с именем Procmon64.exe, а затем выполняет его. По какой-то причине этот процесс не выполняется на некоторых установках Windows 7.

Мне удалось извлечь 64-битный EXE-файл с помощью Visual Studio 2010.

  1. Откройте Visual Studio и откройте файл Procmon.exe, используя меню Файл-> Открыть-> Файл ...
  2. В дереве ресурсов разверните узел «BINRES».
  3. Щелкните правой кнопкой мыши узел 1308 и выберите Экспорт ...
  4. Назовите экспортированный ресурс Procmon-64.exe и сохраните
  5. Запустите извлеченный exe

Не называйте извлеченный exe Procmon64.exe (без дефиса), потому что 32-битный Procmon попытается удалить его, если у него появится такая возможность.

Если у вас нет Visual Studio, используйте экстрактор исполняемых ресурсов Windows, например ResourcesExtract - http://www.nirsoft.net/utils/resources_extract.html


2
Интересно, что вы нашли обходной путь, но мне было бы гораздо интереснее, зачем вам это нужно делать.
Zoredache

Я бы тоже хотел найти основную причину, но отладка нативного процесса без символов просто не стоит усилий. Особенно такой же интегрированный с ОС, как Process Monitor.
Райан Микела

Извлечение 64-битного exe-файла ProcMon в автономный EXE-файл и запуск этого exe-решения решает эту проблему для меня! ProcMon работает нормально.
Джиркамат

4
Один раз, когда я безуспешно дважды щелкал Procmon.exe снова и снова в отчаянии, я увидел скрытую вспышку Procmon64.exe в проводнике Windows. Это дало мне понять, что 64-битная версия была извлечена 32-битной версией. После этой догадки я открыл 32-битный exe-файл, чтобы изучить его ресурсы, и я нашел один, который был на несколько порядков больше остальных. Я извлек ресурс и сохранил его как .exe. И вот, это был недостающий 64-битный монитор процесса.
Райан Микела

1
Так как у меня есть эта проблема со многими программами Sysinternal, особенно со всеми, которые извлекают 64-битную версию (это неожиданно произошло совсем недавно, ни одна из них не может быть запущена, потому что это говорит, что каталог не доступен для записи), но если вы запустите средство извлечения ресурсов и нажмете «бинарные активы» или что-то еще в любом из приложений sysinternal, вы можете в основном отсортировать по размеру, и самым большим будет приложение. Просто переименуйте его в exe и отправляйтесь ~
mgrandi

5

Дай мне удивить тебя. procmon.exe ТРЕБУЕТСЯ, чтобы служба рабочей станции работала для запуска. Он использует это для перечисления чего-либо и безмолвно умрет без этого.

Это нигде не задокументировано и довольно поддельное.


1
Да! Это было! Этот ответ должен идти к вершине.
сам

Да, это сделало это для меня. Версия 3.10 не требует этого, но версия 3.20 делает это. Вы преуспели; сумасшедший Сказать «довольно фальшиво» - огромное преуменьшение. У меня нет желания запускать эту службу, поэтому я очень разочарован в Марке.
Synetech

2

Я знаю, что эта тема была давно, но я только что видел эту проблему в последнее время, и я заметил еще один фактор, который может быть полезным. Администратор права. Если я вхожу как администратор и запускаю его, он работает нормально. Если войти в систему как пользователь без прав администратора и запустить его, проблема возникает, и извлеченный procmon-64 показывает ту же проблему.


2

Мне удается извлечь ProcMon64.exe с помощью следующего сценария Perl, помещенного и выполненного во временную папку.

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')}
    }
}

После нескольких выполнений он создает десятки копий, которые все одинаковы (тот же CRC32)



0

Я исправил эту проблему, перепроверив мои переменные окружения. Вы можете проверить %TEMP%, добавляете ли вы что-нибудь внутрь раньше. Удалите все остальные папки, кроме Windows Temp, а затем перезагрузите компьютер.


-2

Я использовал Resource Hacker. Извлеките 1038 как бен. добавьте .exe и, кажется, начать.


Исполняемый файл не открывается в хакере ресурсов ....
Amalgovinus
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.