Win7, необходимо увидеть подробную информацию о командной строке для запуска процессов java.exe - PullRequest
0 голосов
/ 26 июня 2011

[Пожалуйста, прочитайте весь этот контент - я понимаю, что этот вопрос был задан на SO, но предыдущие ответы для меня не работают.]

На Win7, для любого работающего процесса java.exe, мне нужночтобы увидеть точную командную строку, которая была выдана для запуска процесса.Я уже понимаю, что диспетчер задач делает это со столбцом «Командная строка», но если командная строка очень длинная, она в конечном итоге обрезает текст на дисплее, и я не вижу все, что мне нужно.

Я знаю, что об этом уже спрашивали, и я уже пробовал SysInternals Process Explorer, но он не показывает что-либо для командной строки любого из моих java.exeпроцессы, в отличие от того, как многие ответы StackOverflows описали.Я также пробовал JVisualVM и jps, но, насколько я могу судить, для них требуется соединение JMX или jstatd, которое я не считаю применимым в моем случае (пожалуйста, исправьте меня, если я ошибаюсь).Я даже зашел так далеко, что создал файл DMP из диспетчера задач и исследовал его, но это, помимо того, что я был излишним, не дало мне того, что мне было нужно.

1 Ответ

1 голос
/ 26 июня 2011

Хорошо, я просто предположу, что вам не понадобится Java-решение, так что мы здесь. Я вспомнил, как читал об этом в великом блоге Рэймонда Чена некоторое время назад (действительно ли я запомнил 1 1/2-летнее сообщение в блоге о парне, который публикует 3+ сообщения в неделю? Тревожно ~)

Итак здесь мы идем, я думаю, что его предупреждение даже не имеет значения для java-программ, так как вы получаете только строки, что означает, что а) они уже скопированы и б) вы не можете получить доступ к сырому данные и, следовательно, изменить их (примечание: чистая спекуляция).

Что-то в этом духе должно работать (вероятно, используйте вместо имени имя ExecutionPath, вы должны быть в состоянии понять, что вам нужно):

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process where Name='javaw.exe'")
For Each objItem in colItems
     Wscript.Echo objItem.Name
     Wscript.Echo objItem.CommandLine
Next
...