Win7,需要查看运行java.exe进程的详细命令行信息

Win7,需要查看运行java.exe进程的详细命令行信息,java,process,command,Java,Process,Command,[请阅读所有这些内容-我意识到这个问题已经被问到了,但之前的答案对我来说并不适用。] 在Win7上,对于任何正在运行的java.exe进程,我需要查看启动该进程所发出的确切命令行。我已经意识到任务管理器是通过“命令行”列来实现这一点的,但是如果命令行很长,它最终会截断显示中的文本,我无法看到所需的所有内容 我知道以前有人问过这个问题,并且我已经尝试过SysInternals Process Explorer,但它没有显示任何java.exe进程的命令行内容,这与其他StackOverflows答

[请阅读所有这些内容-我意识到这个问题已经被问到了,但之前的答案对我来说并不适用。]

在Win7上,对于任何正在运行的java.exe进程,我需要查看启动该进程所发出的确切命令行。我已经意识到任务管理器是通过“命令行”列来实现这一点的,但是如果命令行很长,它最终会截断显示中的文本,我无法看到所需的所有内容


我知道以前有人问过这个问题,并且我已经尝试过SysInternals Process Explorer,但它没有显示任何java.exe进程的命令行内容,这与其他StackOverflows答案所描述的不同。我也尝试过JVisualVM和jps,但据我所知,它们需要一个JMX或jstatd连接,我认为这不适用于我的情况(如果我错了,请纠正我)。我甚至还从Task Manager创建了一个DMP文件并对其进行了研究,但这不仅是一个过火的操作,还没有提供我所需要的东西。

好吧,我假设您不需要Java解决方案,所以我们开始吧。我记得不久前在雷蒙德·陈(Raymond Chen)的伟大博客上读到过这篇文章(我真的记得一个一个半岁的博客帖子,一个家伙每周发3+篇文章吗?令人震惊~)

因此,我认为他的警告甚至对java程序来说都无关紧要,因为你只得到字符串,这意味着a)它们已经被复制,b)你无法访问原始数据,因此无法更改它(注:纯粹的推测)

沿着这条思路应该可以做到(可能使用ExecutionPath而不是名称,您应该能够为自己找到正确的方法):


我假设解决方案本身不必是java的?听起来这对win32程序来说应该不太难。
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