【发布时间】:2011-01-31 16:52:48
【问题描述】:
我正在尝试在 C# .NET4 Windows 服务应用程序中使用 ManagementEventWatcher。在“OnStart”方法的某个时刻,我有以下几行:
string scope = "\\root\\cimv2";
string query =
"SELECT * FROM __InstanceCreationEvent " +
"WITHIN 1 " +
"WHERE TargetInstance ISA 'Win32_NTLogEvent' " +
" AND ( " +
" targetInstance.EventCode = '4768' " +
" OR targetInstance.EventCode = '4770' " +
" OR targetInstance.EventCode = '672'" +
" OR targetInstance.EventCode = '674'" +
" )";
eventListener = new ManagementEventWatcher(scope, query);
eventListener.EventArrived += new EventArrivedEventHandler(HandleEvent);
eventListener.Start();
eventListener.Start();行给出异常消息“拒绝访问”。我尝试将我的服务设置为管理员或本地系统,但没有帮助。
我还找到了这个文档:http://msdn.microsoft.com/en-us/library/aa392289(VS.85).aspx 但我不知道如何在 C# 中使用它。
如果将相同的代码放入 WindowsForms 应用程序中,则可以按预期工作。
谢谢。
【问题讨论】:
-
如果您将 Windows 服务配置为模拟您自己的 Windows 帐户而不是 Localsystem 运行,它是如何工作的?
-
正如我在问题中所说,我已将其模拟为系统上唯一的帐户“管理员”,但它仍然被“拒绝访问”。