我有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"}
答案 0 :(得分:1)
服务通常作为网络服务或本地系统运行,除非您已经过度配置它们。听起来您没有更改服务登录用户。您可以通过右键单击服务并转到“登录”选项卡,从服务控制管理器执行此操作。或者您可以从命令行执行此操作:
sc config ServiceName obj= Domain\user password= pass
请注意obj=
和Domain\user
之间的空格,这不是拼写错误。这是必需的。 password=
也一样。