gopsutil 在windows 2003 上获取进程信息报错 access is denied

在使用 gopsutil v3.20.11+incompatible 开发进程监控工具时,部署到 Windows 2003 服务器上出现 'access is denied' 错误。原因是 gopsutil 中的 openProcess() 方法在 Windows XP 和 2003 上不支持 PROCESS_QUERY_LIMITED_INFORMATION 权限,需要改为使用 PROCESS_QUERY_INFORMATION。通过更新 gopsutil 代码,同时包含两种权限,问题得到解决。

最近做了一个进程监控的小工具,网上找了下关于进程监控的第三方库,使用https://github.com/shirou/gopsutil 库的比较多。
于是使用了mod github.com/shirou/gopsutil v3.20.11+incompatible的版本进行开发

现象

开发完之后在本地机器(windows 7)测试了下都ok。部署完之后就没管了,今天发现一台windows 2003的机器进程运行异常了。上去看了下日志发现一直在报access is denied。
首先想到的是进程权限不够,但是后来想想进程已经注册为系统服务了应该是以SYSTEM权限运行,并且使用Administrator调试后还是不行。思考是否为代码问题。

原因

调试代码并查阅Windows相关文档后发现我使用的gopsutil版本中,openProcess()方法是用的权限为windows.PROCESS_QUERY_LIMITED_INFORMATION,在Windows xp和2003 版本并不支持这个权限。必须用 windows.PROCESS_QUERY_INFORMATION进行查询。

解决方案

翻看了gopsutil 库的issue看到前几天刚好有个xp系统也有差不多的问题,更新了下最新的的代码。问题解决!

代码中修改的内容是两个权限都加入进去
[process][windows] Fix #714 call OpenProcess with PROCESS_QUERY_INFORMATION on WinXP #1045

h, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(pid))
cons
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值