[请阅读所有这些内容 - 我知道这个问题已在SO上提出,但没有事先的答案对我有用。]
在Win7上,对于正在运行的任何java.exe进程,我需要查看为启动进程而发出的确切命令行。我已经意识到任务管理器使用“命令行”列执行此操作,但如果命令行很长,它最终会截断显示中的文本,我看不到我需要的所有内容。
我知道之前已经问过这个问题,我已经已经尝试了 SysInternals Process Explorer但是它没有为我的任何java.exe进程显示命令行的任何 ,与其他StackOverflows的答案描述的不同。我也尝试过JVisualVM和jps,但据我所知,这些需要JMX或jstatd连接,我不认为适用于我的情况(如果我错了请纠正我)。我甚至已经从任务管理器创建了一个DMP文件并对其进行了调查,但除了过度杀戮之外,我还没有提供我需要的东西。
答案 0 :(得分:1)
好的我只是假设你不需要Java解决方案,所以我们走了。我记得前一段时间在Raymond Chens的博客上读过这篇文章(我真的记得一个1岁半的博客帖子,一个人每周发帖3个以上吗?惊人的〜)
所以here我们去了,我认为他的警告对于java程序来说甚至都不重要,因为你只得到字符串,这意味着a)它们已被复制并且b)你无法访问原始数据和因此改变它(注意:纯粹的推测)。
这一行应该有用(可能使用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