WMI 및 C#을 사용하여 원격 컴퓨터의 이벤트 뷰어에서 알림을 얻으려고합니다. 시스템에 연결할 수 있으며 ManagementObjectSearcher
을 사용하여 이벤트 로그를 가져올 수 있습니다. 하지만 ManagementEventWatcher.Start
메서드를 사용하려고하면 예외가 발생합니다.ManagementEventWatcher (WMI)가 원격 컴퓨터에서 이벤트를 알리는 동안 예외가 발생했습니다.
액세스가 거부되었습니다. (HRESULT에서 예외 : 0x80070005와 (E_ACCESSDENIED))
나는 root\cimv2
에 WMI 컨트롤의 권한 '을 부여하고 또한 DCOM 구성에서 사용자의 계정에 관리자 권한을 부여했다.
나는 정상적인 Windows 응용 프로그램을 사용하고 있으므로 ASP.net (ASPNET 사용자)을 사용하지 않습니다.
내 코드는 다음과 같습니다
ConnectionOptions connectionOptions = new ConnectionOptions();
connectionOptions.Username = @"Domain\UName";//txtUserName.Text;
connectionOptions.Password = "pass";//txtPassword.Text;
connectionOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope managementScope = new ManagementScope(@"\\server\root\cimv2",connectionOptions);
managementScope.Options.EnablePrivileges = true;
managementScope.Connect(); // this line is executing fine.
eventWatcher = new ManagementEventWatcher(managementScope, new EventQuery("Select * From __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.LogFile = 'Application'"));
eventWatcher.EventArrived += new EventArrivedEventHandler(Arrived);
eventWatcher.Scope.Options.EnablePrivileges = true;
eventWatcher.Start(); // Error occurs here
이것은 분명히 받아 들여진 답변 일 것입니다. 이 오류를 해결하기 위해 많은 시간을 소비하지만 비동기 버전은 단순히 인증과 작동하지 않습니다. 이 답변에 감사드립니다. –
@Pieter - 가능합니다. 제 답변을 참조하십시오. Microsoft는 여전히 semi-synchronous 방법을 권장합니다. –