AA
我想将自定义属性添加到WMi对象的属性集合中。因此,每当我检索该对象的属性时,我也会获得自定义添加的属性。具体来说,请看下面的代码。
foreach (ManagementObject WebSite in WebSitesCollection)
{
if (WebSite.Properties["Name"].Value.ToString().Contains(appPoolName))
{
foreach (PropertyData propertyData in WebSite.Properties)
{
try
{
HttpContext.Current.Response.Write(propertyData.Name + " " + propertyData.Value + "<br/>");
if (propertyData.Name.Equals("Enable32BitAppOnWin64"))
{
AppPoolx.SetPropertyValue("Enable32BitAppOnWin64", true);
AppPoolx.Put(); return true;
}
else
{
AppPoolx.Properties.Add("Enable32BitAppOnWin64", true);
AppPoolx.Put(); return true;
}
}
catch (Exception ex1)
{
HttpContext.Current.Response.Write("Error Ocurred while Setting Property: " + ex1.Message + "<br />");
break;
}
}
}
}
但AppPoolx.Properties.Add("Enable32BitAppOnWin64", true);
返回错误
由于对象的当前状态,操作无效。
我想知道是否甚至可以向WMi对象添加自定义属性。如果这个Add()函数是什么?
在任何情况下,将“自定义属性”添加到WMI对象的正确过程是什么。
请不要建议我可以存储在DB中。
此致
史蒂夫
答案 0 :(得分:2)
WMI对象基本上是com对象,很像C#对象,这些对象由另一端的代码填充。
要添加此自定义属性,您必须在另一端的代码中具有存储自定义属性的对象数据的功能。
您调用的add属性方法对WMI API返回的所有(几乎大多数)com对象无效,这可能是您的问题,我知道这与WMI调用的对象的方式有关从调用它们的com组件编组。
简而言之: 这是不可能的。
更正确的方法是确定您正在使用的对象的实际类型,并在对象可写的属性上设置属性值,然后将其推回到WMI API。