【发布时间】:2013-04-05 21:31:31
【问题描述】:
我正在使用 WMI 进行查询以检查特定的驱动器号,如果它不存在,那么我想运行一个方法来使用特定设置创建它。现在我面临的问题是当我发送测试查询以查看驱动器号是否存在时,它返回空。没有错误或异常。
我将如何处理这种情况?
谢谢
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\cimv2",
@"SELECT * FROM Win32_Volume Where DriveLetter = '" + DriveLetter + "'");
foreach (ManagementObject queryObj in searcher.Get())
{
drives.CurrentDriveLetter = queryObj["DriveLetter"] == null ? "null" : queryObj["DriveLetter"].ToString();
drives.CurrentDriveSize = queryObj["Capacity"] == null ? "null" : queryObj["Capacity"].ToString();
drives.CurrentDriveName = queryObj["Label"] == null ? "null" : queryObj["Label"].ToString();
}
【问题讨论】:
-
UpdateUI(drives) can you post that method as well..? also what isdrives 是什么,它在哪里声明?` -
drives 是一个类,只包含数字/字母/标签/大小。 UpdateUI 是更新列表视图的内容。这两件事可以忽略不计,我想弄清楚的是一种区分有数据的结果和没有数据的结果的方法。这对我来说是棘手的部分,因为没有抛出异常
-
我测试了代码,我得到了除了驱动器号之外的所有内容,你的
.ToString()应该以这种方式投射(string)queryObj["DriveLetter"]; -
您可以查看此链接并轻松转换为 C# 代码以及msdn.microsoft.com/en-us/library/windows/desktop/…
-
但如果该驱动器不存在怎么办?尝试传入一个随机驱动器号,它不会出错,所以你不知道查询是否有效