Process Monitor спешит на помощь NetBeans'у
Сегодня ставил NetBeans 7.1, установка как всегда прошла нормально, а вот с первым запуском - проблемы:
Под катом описание уязвимости в NetBeans и Happy End.
Первым делом находим, где же лежит "nbexec.dll". Смотрим на свойства ярлыка, которым запускаем NetBeans:
Так-с, рабочая директория отличается от места положения "netbeans.exe", поэтому "nbexec.dll" надо искать в "C:\Program Files\NetBeans 7.1\platform\lib\nbexec.dll", и он там есть.
Так где же 'netbeans.exe' ищет 'nbexec.dll'?
Сейчас нам как раз и поможет Process Monitor.
Запускаем его, останавливаем трассировку (Ctrl+E), и создаем фильтр (Ctrl+L) для "netbeans.exe" : 
Нам нужны только события файловой системы, запись остальных - отключаем:
Теперь включаем трассировку (Ctrl+E), и запускаем NetBeans. В момент появления ошибки - останавливаем трассировку, и ищем "nbexec.dll":
Вот и ответ: "C:\Program Files\NetBeans 7.1\bin\platform\lib\nbexec.dll", "C:\Windows\SysWOW64\platform\lib\nbexec.dll", ...
Получается, что NetBeans уязвим (описание уязвимости в механизме динамической загрузки DLL - MSA2269637), а в используемой системе эксплуатация этой уязвимости закрыта. Вот по этому (из-за исключения поиска dll в текущей директории) "nbexec.dll" и не был найден.
Что же делать?
Можно для "netbeans.exe" в реестре "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\netbeans.exe" включить поиск dll в текущей директории. Однако, это откроет доступ к эксплуатации уязвимости в NetBeans.
Другой вариант - создать символьную ссылку "platform" на "C:\Program Files\NetBeans 7.1\platform\" в "C:\Program Files\NetBeans 7.1\bin\" командой:
MKLINK /d "C:\Program Files\NetBeans 7.1\bin\platform" "C:\Program Files\NetBeans 7.1\platform"
После создания символьной ссылки, NetBeans наконец запустился :)
