每次修改登錄檔之後如果想要立即見到效果的話都要重啟explorer真是相當讓人不爽,網上對於此類回答基本上就是重啟explorer和重啟系統。
有很多功能,比如windows自身提供的一些設定選項,在使用者進行了操作之後實際上也是操作的登錄檔,但是能夠立即重新整理而無須重啟explorer(當然有些操作也是需要重啟的)。那麼也就是說肯定是有方法不用重啟explorer就能實現立即生效的。
因為我也沒有太多的時間來系統的研究這一整套方法,經過幾天的研究也算是找到了幾種可行的重新整理機制。下面列出來幾條既為了整理記錄也為了能夠拋磚引玉。
1. systemparametersinfo函式。通過給第乙個引數傳入乙個set屬性的引數可以實現部分系統重新整理功能,例如:有乙個小功能是設定win8視窗開啟關閉時的動畫效果,這個功能系統自帶有設定選項,可以選擇開啟或者關閉,整個過程不需要重啟explorer。具體實現方法就是修改了相應的登錄檔項後呼叫:systemparametersinfo(spi_setanimation,sizeof(animationinfo),&info,spif_sendchange); 其中info是乙個animationinfo結構體。
關於這個系統函式有大量的引數可以使用,在此就不多羅列了。
2. postmessage/sendmessage函式。關於這倆函式肯定都很熟悉了,比如使用sendmessage(hwnd_broadcast,wm_settingchange,0,0)可以廣播設定變更訊息,在很多場合上很有用;另外,後來研究過一段時間模擬右鍵重新整理桌面的功能,網上有人使用模擬f5按鍵訊息的方法個人感覺不太靠譜,一方面可能容易被安全軟體截獲,另一方面還要考慮存在某些軟體修改f5功能的情況。後來在網上查到傳送41504的wm_command訊息就可以完美模擬重新整理桌面訊息:postmessage(hwnd_broadcast,wm_command,41504,null)。但是對於重新整理本身都無法實現即時生效的登錄檔修改依然幫不上忙。
3. 另外,shchangenotify函式也能實現一部分系統功能的重新整理,但是由於在最近的專案上沒有效果,就不細說了。
讓Windows登錄檔修改快速生效
當我們修改了登錄檔,許多情況下只按下f5鍵重新整理登錄檔還不足以使修改生效,而需要重新啟動計算機。其實我們不必每次都重啟機器,只需執行windows的外殼程式explorer即可 在windows 9x me和windows 2000 xp中的操作有所不同 在windows 9x me中 程式設計客...
Oracle 解除安裝後修改登錄檔tips
我這裡是oracle9.2,解除安裝後再安裝,一般不會成功,因為在登錄檔檔案裡存留了大量的記錄,一般只要刪幾個關鍵的就可以重新安裝 這幾個關鍵key 是 key local machine system controlset001 service oracle controlset002 servi...
更改登錄檔的幾個函式
一 定義 hkey hkey char content 256 所查詢登錄檔鍵值的內容 dword dwtype reg sz 定義讀取資料型別 dword dwlength 256 struct hkey rootkey 登錄檔主鍵名稱 tchar subkey 欲開啟登錄檔項的位址 tchar ...