System.ComponentModel.Win32Exception:拒绝访问

时间:2014-12-01 05:59:33

标签: c# windows permissions windows-services performancecounter

我有Windows服务。我使用PerformanceCounter类从Domain Machine获取CPU数据。 我使用域管理员权限运行我的代码。

问题就在这里,我可以在Visual Studio中运行代码时使用PerformanceCounter获取CPU数据。但是,安装Windows服务后,相同的代码无法正常工作。

此处的代码:

PerformanceCounter pc = new PerformanceCounter();
pc.MachineName = "ws-Rahul";
pc.CategoryName = "Processor";
pc.CounterName = "% Processor Time";
pc.InstanceName = "_Total";

double value = pc.NextValue();

以下是例外:

System.ComponentModel.Win32Exception : {"Access is denied"}

1 个答案:

答案 0 :(得分:1)

服务通常作为网络服务或本地系统运行,除非您已经过度配置它们。听起来您没有更改服务登录用户。您可以通过右键单击服务并转到“登录”选项卡,从服务控制管理器执行此操作。或者您可以从命令行执行此操作:

sc config ServiceName obj= Domain\user password= pass

请注意obj=Domain\user之间的空格,这不是拼写错误。这是必需的。 password=也一样。