解決在Windows 7/Vista上跑.NET 1.1/1.0 程式按功能鍵:出現「無法出現攔截Hook」錯誤
當你在Win Vista/7上跑舊版的.NET 1.0 或 1.1 的Windows form程式,當按下function鍵時,出現錯誤「無法出現攔截Hook」,如下視窗:
問題是出在System.Windows.Forms.SendKeys.Send 方法,SendKeys 類別預設會嘗試使用全域日誌攔截程序。在UAC 服務已啟動時,這個攔截程序就沒有登入 Windows Vista/7 的權限。
解決之道:
-
關掉UAC,適用.NET1.0/1.1,操作如下:
【控制台】→【使用者帳戶和家庭】→【使用者帳號】→【變更使用者帳號控制設定】
設定到【不要通知】,按【確定】,就完成了。
-
套用GDR,適用.NET 1.1
立即下載 KB925168 套件。
這個 GDR 會更新 .NET Framework 1.1。套用後,.NET Framework 1.1 會改為呼叫 User32 SendInput API,而不會建立全域日誌攔截程序。