В моем проекте я хочу отслеживать установку и удаление программ в моей системе, поэтому я использую механизм событий WMI, но теперь я столкнулся с проблемой и у меня возник вопрос.
проблема:
Я хочу отслеживать HKLM’SOFTWARE \ Microsoft \ Windows \ currentversion \ unistall ‘, но код [1] работает с ошибкой (ExecNotificationQueryAnsync не работает с = 0x80041058). В то время как код [2] работает нормально, что не так?
[1]hres = pSvc->ExecNotificationQueryAsync(
_bstr_t("WQL"),
_bstr_t("SELECT * FROM RegistryTreeChangeEvent WITHIN 1 " "WHERE Hive='HKEY_LOCAL_MACHINE'" "AND RootPath='software\\Microsoft\\Windows\\currentversion\\unistall'"),
WBEM_FLAG_SEND_STATUS,
NULL,
pStubSink);
[2]
hres = pSvc->ExecNotificationQueryAsync(
_bstr_t("WQL"),
_bstr_t("SELECT * FROM RegistryTreeChangeEvent WITHIN 1 " "WHERE Hive='HKEY_LOCAL_MACHINE'" "AND RootPath='software'"),
WBEM_FLAG_SEND_STATUS,
NULL,
pStubSink);
вопрос : в моем потребителе событий, я хочу получить название программного обеспечения, как я могу это сделать?
Спасибо!!
Просто используйте
SELECT * FROM RegistryTreeChangeEvent WITHIN 1 " "WHERE Hive='HKEY_LOCAL_MACHINE'" "AND RootPath='software\\\\Microsoft\\\\Windows\\\\currentversion\\\\unistall'"
Других решений пока нет …