c# – 使用ASP.NET的WMI提供程序

我正在编写一个小的ASP.NET页面来检测和显​​示本地服务器上已安装的SSRS实例的信息.

我发现以下工具对Microsoft … WMI Code Creator非常有用

从命令行运行时,它生成的代码非常有用.但是当我尝试在我的ASP.NET页面中执行相同的代码时,我得到了…

“未处理的执行错误”
异常详细信息:System.Runtime.InteropServices.COMException

这是代码……

    ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\Microsoft\\SqlServer\\ReportServer\\[INSTANCE_HERE]\\v10\\Admin", "SELECT * FROM MSReportServer_ConfigurationSetting");

    foreach (ManagementObject queryObj in searcher.Get())
    {
        Response.Write(string.Format("InstanceName: {0}", queryObj["InstanceName"]));
    }

我的猜测是通过IIS存在某种权限问题,但我要感谢一个明确的答案.我认为这可能是所有WMI提供程序通过ASP.NET的问题,但以下代码在页面中工作正常…

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem");

    foreach (ManagementObject queryObj in searcher.Get())
    {
        Response.Write(string.Format("Name: {0}", queryObj["Name"]));
    }

任何关于幕后究竟发生了什么的帮助,以及为什么我得到上述异常都会非常受欢迎.

最佳答案 使用dcomcnfg将网络服务帐户添加到DCOM的启动条件中.

在cmd中键入dcomcnfg

转到组件服务 – >我的电脑 – > Com Security – > Lauch和激活权限 – >编辑默认 – >添加…

现在添加网络服务并允许所有权限.

点赞