用gopsutil/disk库编写脚本,下列代码执行报错Access is denied:
stats, err := disk.IOCounters("C:")
if err != nil {
fmt.Println("Error:", err)
return
切换到管理员模式仍然报错,开始排查。
1 排查到是引用库中的这部分报错
h, err := windows.CreateFile(syscall.StringToUTF16Ptr(szDevice), 0, windows.FILE_SHARE_READ|windows.FILE_SHARE_WRITE, nil, windows.OPEN_EXISTING, 0, 0)
if err != nil {
if err == windows.ERROR_FILE_NOT_FOUND {
continue
}
return drivemap, err
}
2 打印,发现是走到 M盘时候报错,怀疑是M盘的问题,因为我的电脑没有M盘
\\.\C:
\\.\D:
\\.\M:
Error: Access is denied.
3 查看磁盘列表,发现逻辑分区,比实际分区多出一个M,可以确定是这个导致的文章来源:https://www.toymoban.com/news/detail-609663.html
> wmic logicaldisk get caption
Caption
C:
D:
M:
Get-WmiObject Win32_Volume | Select-Object DriveLetter, DeviceID, FileSystem, Label
DriveLetter DeviceID FileSystem Label
----------- -------- ---------- -----
C: \\?\Volume{865b8944-eee6-4637-9188-1ac95c53f5c2}\ NTFS Windows
\\?\Volume{55a26f03-6b71-4efd-9176-3ae0567f14b5}\ NTFS WinRE_DRV
D: \\?\Volume{5824d226-b7e1-4721-964c-4fcb8ab70d79}\ NTFS Data
\\?\Volume{31b8e965-f7e1-47c7-9d3a-554a3455c560}\ FAT32 SYSTEM
4 文章来源地址https://www.toymoban.com/news/detail-609663.html
到了这里,关于解决gopsutil/disk报 Access is denied的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!