問題的來龍去脈
當你在Win Vista/7上跑舊版的.NET 1.0 或 1.1 的Windows form程式,按下功能鍵時,出現錯誤「無法建立攔截程序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,而不會建立全域日誌攔截程序,便可解決這個問題。
沒有留言:
張貼留言