Sigar获取进程的用户信息乱码是何原因?

jinggangshi 2019-04-18 11:08:14
用下面的方法获取进程信息,进程的名称、Pid、内在使用等信息都能正常,但用户名和时间不正常,如当前用户的能正常显示,System以及其他系统用户的进程、或服务的用户名和时间克是乱码,显示三个问号“???”。
public static ProcessInfo getProcessInfo(long pid) {
ProcessInfo pi = new ProcessInfo();
// 通过Pid获取进信息
Sigar sigar = new Sigar();
SigarProxy sigarProxy = SigarProxyCache.newInstance(sigar);
List pif = new ArrayList<>();
try {
pif = Ps.getInfo(sigarProxy, pid);
} catch (SigarException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
for (int i = 0; i < pif.size(); i++) {
String s = pif.get(i).toString();
switch (i) {
case 0:
pi.pid = s;
break;
case 1:
pi.userName = s;
break;
case 2:
pi.startTime = s;
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
pi.procPath = s;
s = s.substring(s.lastIndexOf("\\") + 1, s.length());
s = s.substring(s.lastIndexOf("/") + 1, s.length());
pi.procName = s;
break;
}
}

return pi;
}


用这段代码获取进程信息,调试跟踪变量或用Print输出都是乱码:
pif = Ps.getInfo(sigarProxy, pid);
...全文
121 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
reddiamond127 2019-06-21
  • 打赏
  • 举报
回复
主要是权限不足,除了System用户和你自己,其他的用户信息你很难获取

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧