Hallo zusammen,
habe mir den Bericht "Windows Management Instrumentation" durchgelesen und ausprobiert. Leider funktioniert der Code zum regieren auf ereignisse nur Local. Wenn man auf einen anderen Rechner Verbindet bekommt man bei "ExecNotificationQueryAsync" den Fehler "Zugriff verweigert".
Habe mal danach gegooglelt und leider nichts zu diesem Thema gefunden. Was ich probiert habe, ist eine privilege zu setzen. Aber auch dies blieb ohne erfolg.
Hier mein Code dazu...
Kennt jemand eine Lösung für dieses Problem?
MFG
Christian Dannenberg
habe mir den Bericht "Windows Management Instrumentation" durchgelesen und ausprobiert. Leider funktioniert der Code zum regieren auf ereignisse nur Local. Wenn man auf einen anderen Rechner Verbindet bekommt man bei "ExecNotificationQueryAsync" den Fehler "Zugriff verweigert".
Code:
FServices := FLocator.ConnectServer('.', 'root\cimv2', '','', '', '', wbemConnectFlagUseMaxWait, nil); FSink := TSWbemSink.Create(self); FSink.OnObjectReady := ProcessCreated; FServices.ExecNotificationQueryAsync(FSink.DefaultInterface, 'SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA "Win32_Process"', 'WQL', 0, nil, nil);
Hier mein Code dazu...
Code:
function TFMain.Ueberwachung(Host: string): boolean; begin result := true; try m_WMIServices := m_Locator.ConnectServer(Host, 'root/cimv2', EBenutzer.Text, Ekennwort.Text, '', '', wbemConnectFlagUseMaxWait, nil); m_WMIServices.Security_.Set_ImpersonationLevel(wbemImpersonationLevelImpersonate); m_WMIServices.Security_.Privileges.AddAsString('SeSecurityPrivilege',false); aSink := TSWbemSink.Create(self); aSink.OnObjectReady := ProcessCreated; m_WMIServices.ExecNotificationQueryAsync(aSink.DefaultInterface, 'SELECT * FROM __InstanceCreationEvent within 0.1 WHERE TargetInstance ISA "Win32_Process"', 'WQL', 0, nil, nil); except on e: exception do begin writelog(e.message); result := false; end end end;
Kennt jemand eine Lösung für dieses Problem?
MFG
Christian Dannenberg