windows下jvm抛出:"Insufficient privileges to attach"

由于应用跑在windows下,并以System用户运行。

本人以Administrator来进行attach操作,结果就可想而知,直接报出:

"Insufficient memory or insufficient privileges to attach"
很明显,System用户比Administrator用户权限高得多,也情有可理,于是通过PsExe工具启动我得程序,来attach目标程序,两者都是System用户运行,结果依然出现上面得错误,于是将attach程序去掉界面来运行,及不要PsExec得-i参数,嗯,结果就可以了,那到底为什么有了界面就不行了呢,还得从异常说起,这个异常是jvm抛出来的,java里看不到,于是去翻openjdk7, 搜遍整个openjdk7源码都没找到这句话,按理会在WindowsVirtualMachine.c这个文件中,结果真心就没有,异常都不知道在哪儿抛出来的,怎么搞?一不小心在网上看到了这么段源码:(都被标记为Old了,没办法只能怀疑Oracle jdk里面还保留着这个)
if (GetLastError() == ERROR_NOT_ENOUGH_MEMORY) {
   // This error will occur when attaching to a process belonging to
   // another terminal session. See "Remarks":
   // http://msdn.microsoft.com/en-us/library/ms682437%28VS.85%29.aspx
   JNU_ThrowIOException(env,
           "Insufficient memory or insufficient privileges to attach");
} else {
   JNU_ThrowIOExceptionWithLastError(env, "CreateRemoteThread failed");
}
喜出往外,终于看到本人了, http://msdn.microsoft.com/en-us/library/ms682437%28VS.85%29.aspx 这儿就一目了然了。

收工吧。

你可能感兴趣的:(jvm,windows,Attach,privileges,Insufficient)