首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Management访问被拒绝

System.Management访问被拒绝
EN

Stack Overflow用户
提问于 2010-11-12 04:20:45
回答 3查看 11K关注 0票数 4

我使用一些代码来尝试计算.NET 2.0中的处理器数量:

代码语言:javascript
复制
internal static int GetNumberOfProcessors()
{
    List<string> list = new List<string>();
    ManagementClass mgmt = new ManagementClass("Win32_Processor");
    foreach (ManagementObject obj in mgmt.GetInstances())
    {
        string item = obj.Properties["SocketDesignation"].Value.ToString();
        if (!list.Contains(item))
        {
            list.Add(item);
        }
    }
    return list.Count;
}

它就像这样爆炸了:

代码语言:javascript
复制
[ManagementException: Access denied ]
   System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) +377984
   System.Management.ManagementScope.InitializeGuts(Object o) +654
   System.Management.ManagementScope.Initialize() +162
   System.Management.ManagementObject.Initialize(Boolean getObject) +492
   System.Management.ManagementClass.GetInstances(EnumerationOptions options) +122
   System.Management.ManagementClass.GetInstances() +6

这段代码在cassini上运行得很好,但在我们的beta服务器上就崩溃了。有谁知道该怎么做吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-01 00:30:21

好吧,我讨厌回答我自己的问题,但我发现了这个:http://support.microsoft.com/kb/317012,它似乎确实起作用了。

您必须专门修改您的CIMV2权限,而我必须针对特定用户执行此操作,而不是针对ASP.NET。一旦打开它,您就可以使用System.Management代码来计算处理器等。

我真的不喜欢这样晦涩难懂。微软需要更新这些异常。当System.Management类像这样失败时,它应该给出详细的信息,说明需要激活哪些权限才能使代码工作。

票数 11
EN

Stack Overflow用户

发布于 2010-11-12 04:23:55

看起来像是权限问题。

如果它在本地运行良好(在cassini下),它将在您的凭据下运行,这些凭据可能具有本地管理员权限,因此具有访问此数据的正确权限。

确保代码以具有足够权限获取此数据的用户身份运行(如果运行IIS 7及更高版本,请查看应用程序池标识-这将是运行代码的帐户)。

票数 2
EN

Stack Overflow用户

发布于 2016-01-21 11:27:50

天哪,使用Aspose.Email (域名电子邮件地址验证)还是会遇到同样的问题。

下面是我的错误消息:

字符串:在System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus拒绝访问) at System.Management.ManagementScope.InitializeGuts(Object o) at System.Management.ManagementScope.Initialize() at System.Management.ManagementObjectSearcher.Initialize() at System.Management.ManagementObjectSearcher.Get() at  .() at  .() at  .(String ) at Aspose.Email.Verify.EmailValidator.(String,Int32 )在Aspose.Email.Verify.EmailValidator。(String,MailAddress,String[]& )

对于我的ASP.NET应用程序,我的解决方案是用

代码语言:javascript
复制
using (HostingEnvironment.Impersonate()) 
{
    ...
}     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4158890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档