WMI:属性返回空值
本文关键字:空值 返回 属性 WMI | 更新日期: 2023-09-27 18:31:30
我正在尝试构建一个简单的 Windows 窗体应用程序,该应用程序可以使用 WMI 查询用户计算机的功能(从硬盘驱动器开始)。
到目前为止,我已经做到了这一点(HardDriveCheckResult
是我自己的课程):
ConnectionOptions wmiConnOpts = new ConnectionOptions();
wmiConnOpts.Impersonation = ImpersonationLevel.Impersonate;
wmiConnOpts.Authentication = AuthenticationLevel.Default;
wmiConnOpts.EnablePrivileges = true;
ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(@"select * from Win32_LogicalDisk WHERE DriveType = 5");
managementObjectSearcher.Scope.Options = wmiConnOpts;
List<HardDriveCheckResult> hardDriveCheckResults = new List<HardDriveCheckResult>();
foreach (ManagementObject managementObject in managementObjectSearcher.Get())
{
string hardDriveName = managementObject["name"].ToString();
object objFreeSpace = managementObject["FreeSpace"];
double freeSpace = objFreeSpace == null ? 0d : (double)objFreeSpace;
... additional code not relevant
}
我遇到的问题是managementObject["FreeSpace"]
总是返回 null。我怀疑这可能与进行WMI调用的帐户的权限有关,因此我包含由Google提供的ConnectionOptions
代码。
任务管理器告诉我该程序以我的帐户(管理员)身份运行,所以我有点困惑为什么WMI调用不会返回所有数据。
由于权限而对managementObject["FreeSpace"]
的调用返回 null 是否正确?或者它完全是别的东西?
哦,顺便说一下,对managementObject["name"]
的调用正确返回了驱动器号。
好吧,答案是糟糕的谷歌搜索。查询在驱动器类型 = 5(即 CD-ROM 驱动器)上筛选。我以为我正在过滤硬盘驱动器。
可用空间部分返回空值,因为驱动器中没有磁盘。