簡體   English   中英

低級鼠標掛鈎不會在管理進程中觸發mousedown / mouseup事件

[英]Low level mouse hook doesn't fire mousedown/mouseup event on admin process

我現在正在編輯這個項目,因為我認為我已經確定了問題,這似乎是Win8.1和Win10的操作系統錯誤。 問題摘要仍然與以前相同“低級鼠標掛鈎不會在管理進程上觸發mousedown / mouseup事件” ...對於管理員應用程序,如果非管理員啟動其自己的低級別掛鈎。

重現問題的步驟:

  1. 在這里下載演示應用
  2. 以管理員身份運行該應用
  3. 確保監控鼠標上/下/點擊事件
  4. 確認在步驟#2上啟動的應用程序能夠監控管理進程上的鼠標上/下/點擊事件(包括在其自己的窗口上)
  5. 以非管理員身份運行該應用的另一個實例
  6. 確保監控鼠標上/下/點擊事件

結果:請注意,作為管理員運行的應用程序實例(從#2開始)現在無法獲得鼠標上/下/點擊事件,但它仍然可以獲取其他鼠標事件和所有鍵盤事件

有沒有人遇到過這個問題?

OP:

...它證實,當前台窗口正在作為管理員的mouseup / MouseDown事件中,沒有得到觸發。

OP:

如果我的應用程序沒有 以管理員身份運行那么我無法獲得所有鼠標/鍵盤事件,

從Vista開始,應用程序無法在提升的應用程序上發布消息或安裝掛鈎。 這是通過用戶界面權限隔離(UIPI)和完整性 (見下文)完成的。

MSDN:

UIPI不會干擾或更改同一特權(或完整性)級別的應用程序之間窗口消息傳遞的行為。 UIPI通過阻止以下行為來防止低權限進程訪問更高權限的進程 較低權限的進程不能

  • 對具有更高權限的進程執行窗口句柄驗證。
  • 將SendMessage或PostMessage用於以更高權限運行的應用程序窗口。 這些API返回成功但靜默刪除窗口消息。
  • 使用線程掛鈎附加到以更高權限運行的進程。
  • 使用日志掛鈎來監視以更高權限運行的進程
  • 對運行具有更高權限的進程執行動態鏈接庫(DLL)注入。 告訴我更多......

我記得在Vista發布之前,有一個可愛的Word文檔,主要是關於為Windows Vista准備應用程序,但遺憾的是我無法找到它。

但如果我的應用程序以管理員身份運行,則無法獲取mousedown / mouseup事件

也許你的鼠標鈎有問題? 沒有看到你的代碼就無法分辨。

這是Windows的已知問題

根據我的理解,不適用於Windows Vista +。

告訴我更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM