去除搜狗輸入法彈窗騷擾的一個簡易方法
說明:此文原本釋出於我的 CSDN 部落格,但在 CSDN 處在“待稽核”狀態,使用者無法瀏覽,因此轉發到我的部落格園部落格。
-- 2018-12-04
我使用的輸入法,是搜狗輸入法 9.0 正式版(9.0.0.2502)。但比較討厭的是,搜狗輸入法的 SGTool.exe 會彈窗。同時這個程式還是用來設定屬性用的,所以幹掉這個程式以後,我們就沒法再設定屬性了。
(1)拒絕所有使用者組對 SGTool.exe 的所有安全控制權限
先把輸入法屬性設定好。然後找到 SGTool.exe ,用管理員賬戶,右鍵-屬性-許可權,把全部使用者組下面的全部許可權都勾上拒絕,確定即可。這樣這個彈窗的程式就被禁用了,當然,設定輸入法的模糊音等屬性也不行了(除非你再把它的許可權復原)。
(2)修改 SogouPY.ime 的對話方塊模板 ID
禁止 SGTool.exe 以後,其他程序偶爾會彈出下面的對話方塊,再把它幹掉就更清爽了:
用 ProcessExplorer 發現,搜狗輸入法注入到其他程序裡面有兩個 ime 模組(實質等同於 DLL 檔案),彈出這個對話方塊的是叫做 SogouPY.ime 這個檔案。
用 VS2005 開啟這個檔案,可以看到這個對話方塊模板 ID 為 129 (0x81)。
用我自己寫的 PE 檔案資源檢視小程式(這個小程式在我的 cnblogs 部落格上有原始碼,我又加以改進,增加了資源 ID 在檔案中的檔案地址),可以看到對應的對話方塊 ID 在檔案中的位置(簡稱為 FA):
在 SogouPY.ime 中,是通過 DialogBoxParamW 這個 API 來彈出上面的對話方塊,因此,簡易方法就是,我們把檔案中的對話方塊模板 ID 修改掉,這個 API 就無法找到這個對話方塊模板,就不會有彈窗效果了。因此,把
- C:\Windows\SysWOW64\SogouPY.ime
(注:在 x64 位系統上的這個位置,表明它是一個目標平臺為 x86 的程式。)
複製到其他位置產生一個副本,使用 UltraEdit (或者任何能切換到 16 進位制模式的編輯器),在 16 進位制編輯模式下,按 Ctrl-G,在地址中輸入上圖中顯示的對話方塊模板 ID 的檔案地址 0x00552318,在這個位置看到對話方塊模板 ID (是一個 WORD 型別),為兩個位元組(81 00),(這個地方本質上是一個 size = 8 bytes 的 IMAGE_RESOURCE_DIRECTORY_ENTRY
(3)用修改後的 SogouPY.ime 替換當前在使用的
然後進行替換,由於這個檔案可能已經被多個程序對映(載入)到程序空間了,所以直接替換可能不一定能成功。因此如果有安裝雙系統,可以進入另一個系統,或者使用一個被製成 winpe 啟動盤的 U 盤(例如老毛桃,大白菜等),進入到 winpe 系統,進行替換。然後再次回到 windows 系統,就不會再看到輸入法任何彈窗了。
(4)小結以及副作用
輸入法的設定屬性功能也同時被 ban 了。如果需要設定屬性,把原版 SGTool.exe 許可權放開,設定完屬性再次禁用其所有許可權即可。