我正在编写一个小的 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 存在某种权限问题,但是如果您能提供明确的答复,我将不胜感激。我认为这可能是所有通过 ASP.NET 的 WMI 提供程序的问题,但是以下代码在页面中工作正常...
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 安全 -> 启动并激活权限 -> 编辑默认值 -> 添加...
现在添加网络服务并允许所有权限。
关于c# - ASP.NET 的 WMI 提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431918/