.NET环境下,如何解决System.Management访问权限被拒绝的问题?

更新于
2026-10-03 14:04:28
11阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计337个文字,预计阅读时间需要2分钟。

.NET环境下,如何解决System.Management访问权限被拒绝的问题?

使用代码来尝试获取.NET 2.0中的处理器数量,可以通过以下方式实现:

csharpinternal static int GetNumberOfProcessors(){ List list=new List(); ManagementClass mgmt=new ManagementClass(Win32_Processor); foreach (ManagementObject o in mgmt.GetInstances()) { // 这里可以添加处理每个管理对象的代码 } return list.Count;}

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

.NET环境下,如何解决System.Management访问权限被拒绝的问题?

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; }

它像这样爆炸:

[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上本地运行正常,但在我们的测试版服务器上爆炸了.任何人都知道该怎么办?

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

您必须专门修改您的CIMV2权限,我必须为特定用户而不是ASPNET执行此操作.启用此选项后,您可以使用System.Management代码计算处理器等.

我真的不喜欢这是多么模糊. Microsoft需要更新这些异常.当System.Management类失败时,它应该提供有关哪些权限需要激活才能使代码工作的详细信息.

本文共计337个文字,预计阅读时间需要2分钟。

.NET环境下,如何解决System.Management访问权限被拒绝的问题?

使用代码来尝试获取.NET 2.0中的处理器数量,可以通过以下方式实现:

csharpinternal static int GetNumberOfProcessors(){ List list=new List(); ManagementClass mgmt=new ManagementClass(Win32_Processor); foreach (ManagementObject o in mgmt.GetInstances()) { // 这里可以添加处理每个管理对象的代码 } return list.Count;}

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

.NET环境下,如何解决System.Management访问权限被拒绝的问题?

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; }

它像这样爆炸:

[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上本地运行正常,但在我们的测试版服务器上爆炸了.任何人都知道该怎么办?

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

您必须专门修改您的CIMV2权限,我必须为特定用户而不是ASPNET执行此操作.启用此选项后,您可以使用System.Management代码计算处理器等.

我真的不喜欢这是多么模糊. Microsoft需要更新这些异常.当System.Management类失败时,它应该提供有关哪些权限需要激活才能使代码工作的详细信息.