簡體   English   中英

Windows 服務看不到 Shell_TrayWnd

[英]Windows service cannot see Shell_TrayWnd

我需要通過 Windows 服務隱藏任務欄和開始按鈕。

在控制台程序中,我可以成功調用FindWindow和/或EnumWindows以獲取"Shell_TrayWnd"窗口,然后使用ShowWindow(hwnd, SW_HIDE)將其隱藏。

但是當服務執行FindWindow("Shell_TrayWnd", NULL)它返回NULL ,當服務執行EnumWindows它得到一個不包括"Shell_TrayWnd"窗口的不完整列表。

任何人都可以建議服務如何看到"Shell_TrayWnd"窗口,或者建議隱藏任務欄和開始按鈕的替代方法(在服務中有效)? 謝謝。

為服務提供 UI(或以其他方式與 UI 元素交互)的正確方法是提供一個在用戶上下文中運行的 GUI 客戶端,並使用一些 IPC 方法(可能是 RPC,可能是消息傳遞)與服務進行通信。 特權服務中的 UI 處理一直是一個安全漏洞。

如果您只是想要一個計算機智能進程來終止任務欄,那么服務既不需要也沒有幫助。 配置計划任務以在登錄時運行。 或者將注冊表設置為啟動自定義 shell 而不是 explorer.exe。 除了用戶自己的帳戶之外,您沒有做任何需要特權的事情。

為避免控制台窗口閃爍,請為WINDOWS子系統構建程序,或在構建完成后使用editbin /SUBSYSTEM:WINDOWS更改 PE 標頭中的標志。

不幸的是,服務無法訪問 Windows。 這是對服務的(設計的)限制。

暫無
暫無

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

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