繁体   English   中英

wmi:属性返回null

[英]wmi: Property is returning null

我正在尝试构建一个简单的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"]的调用正确地返回了驱动器号。

好的,答案是错误的Google搜寻。 该查询正在筛选DriveType = 5,它是CD-ROM驱动器。 我以为我正在过滤硬盘。

可用空间部分返回null,因为驱动器中没有磁盘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM