1
在我的項目中,我想監視系統中的sofeware安裝和取消安裝,因此我使用WMI事件機制,但現在遇到問題並且有問題。WMI:監視器註冊表更改
問題:
我想監視HKLM'SOFTWARE \微軟\的Windows \ CurrentVersion \反安裝」,但代碼[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);
問題:在我的事件使用者,我希望得到該軟件的名字,我該怎麼辦?
謝謝!!
你的「反安裝」應該是「卸載」 – Anonimista
是的,我失去了一個「n」,但它仍然有效錯誤(ExecNotificationQueryAnsync失敗= 0x80041058),我認爲這是「\」在無法正確識別的完整路徑中。 – user1732045
我找到了問題的答案,它應該更改爲RootPath ='software \\\\ Microsoft \\\\ Windows \\\\ currentversion \\\\\\\'卸載' 然後有人知道如何獲取軟件的名稱?感謝 – user1732045