2
我正在使用WMI讀取處理器的詳細信息WIN32_PROCESSOR。目前我正試圖讀取這些屬性:SELECT CAPTION,L2CACHESIZE,L3CACHESIZE FROM WIN32_PROCESSOR
。這樣,我就用下面的代碼工作:如何處理WMI的管理異常
static void Main(string[] args)
{
string strQuery = "SELECT CAPTION,L2CACHESIZE,L3CACHESIZE FROM WIN32_PROCESSOR";
string strIPAddress = "XXX.XXX.X.XXX";
DataTable dtProcessor = new DataTable();
dtProcessor.Columns.Add("CAPTION");
dtProcessor.Columns.Add("L2CACHESIZE");
dtProcessor.Columns.Add("L3CACHESIZE");
ManagementScope scope = new ManagementScope(@"\\" + strIPAddress + @"\root\cimv2");
SelectQuery query = new SelectQuery();
query.QueryString = strQuery;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject mngmntObj in queryCollection)
{
DataRow dr = dtProcessor.NewRow();
dr["CAPTION"] = mngmntObj["CAPTION"];
dr["L2CACHESIZE"] = mngmntObj["L2CACHESIZE"];
dr["L3CACHESIZE"] = mngmntObj["L3CACHESIZE"];
dtProcessor.Rows.Add(dr);
}
}
這是我的Windows Server 2008 R2的計算機上工作正常,但相同的代碼給我的System.Management.ManagementException
例外 - >Invalid Query
因爲L3CACHESIZE
不存在於XP所討論here。 什麼可以是最好的方式來處理這與閱讀值存在?