如何在ASP.Net应用程序中使用WMI,C#将自定义属性添加到System.Managment对象?

时间:2010-02-16 10:33:55

标签: c# asp.net iis-7 iis-6 wmi

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中。

此致

史蒂夫

1 个答案:

答案 0 :(得分:2)

WMI对象基本上是com对象,很像C#对象,这些对象由另一端的代码填充。

要添加此自定义属性,您必须在另一端的代码中具有存储自定义属性的对象数据的功能。

您调用的add属性方法对WMI API返回的所有(几乎大多数)com对象无效,这可能是您的问题,我知道这与WMI调用的对象的方式有关从调用它们的com组件编组。

简而言之: 这是不可能的。

更正确的方法是确定您正在使用的对象的实际类型,并在对象可写的属性上设置属性值,然后将其推回到WMI API。