VC++鎖屏程序遇到的問題(續)

    終於調試完成,已支持XP和Win7,這個小程序中間出現了若干問題,慢慢道來。

HOOK實現的各個按鍵的加鎖。

剛開始桌面,任務欄直接用的隱藏(SW_HIDE),但是出現的問題是,鎖屏之後這些的確都消失了,但是當雙擊屏幕上的區域是,有時開始菜單會自動彈出。

百思不得其解,猜測開始菜單是任務管理器上的一個Button,可能是鉤子函數部分功能導致的該問題。

解決辦法:結束:explorer.exe

方法一:

TerminateProcess(id, 1);

該方法出現問題,網上查了很多資料,通過這樣的方式結束explorer.exe系統會自動再開啓這個Shell進程。

需要在註冊表中將

"Software\\Microsoft\\Windows\ NT\\CurrentVersion\\Winlogon"

子項中的AutoRestartShell設置爲 0

也有的說將註冊表該位置的Shell子項中的值指向任意一個不是explorer.exe的內容(若指向別的值,PC重啓之後會因爲找不到Shell指向的內容而出現加載不了explorer.exe)

該方法在Win7下應該是可以的,但是在XP下還是不可以。


方法二:

system("taskkill /im explorer.exe /f"); //結束explorer.exe

system("start explorer.exe"); //打開explorer.exe

通過該命令結束explorer.exe命令可以實現結束explorer.exe的效果。


方法三:

"Software\\Microsoft\\Windows\ NT\\CurrentVersion\\Winlogon"

將該註冊表項下的Shell子項指向你的應用程序,則,在開機的時候,則會出現你的程序即爲默認的Shell加載程序。

所以explorer.exe相當於被禁掉了,開啓不了了。


上面就是在結束explorer.exe時遇到的問題和相應的解決方法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章