2009-09-10 112 views
2

我想知道是否有一種方法來刷新HKLM註冊表項HKCU \ SOFTWARE \微軟\的Windows \ CurrentVersion \政策\資源管理器 - 無需重新啓動殼。更新資源管理器配置,而不重新啓動它

我希望能夠在不重新啓動瀏覽器的情況下執行此操作。有沒有已知的方法可以做到這一點?

到目前爲止,我只發現了這件事情:

RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True 

它不適合我的情況下工作。

MS看起來很瘋狂,因爲MS讓Explorer無法在運行時重新讀取它的配置),但你永遠不知道。

編輯: 我試圖做的是禁用/啓用通知區域(托盤),而無需重新啓動。 該註冊表項是

軟件\微軟\的Windows \ CurrentVersion \政策\ Explorer中\

變量:NoTrayItemsDisplay

值:1/0

EDIT 2 這是源代碼應該工作,但在Vista上它不,不是爲通知區域,不是爲我的測試假人,這是在啓動菜單中的MyMusic(變量NoStartMenuMyMusic)

#include <stdio.h> 
#include <windows.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    DWORD dwRetVal; 

    int lResult = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, (WPARAM)0, 
         (LPARAM)"Policy", 
         SMTO_ABORTIFHUNG, 5000, &dwRetVal); 

    printf("lResult = %ld\n", lResult); 
    printf("dwRetVal = %ld\n", dwRetVal); 

    return 0; 
} 

我嘗試了所有理智的wparam和lparam值,但沒有成功。我從here 的代碼和老兄聲稱它的作品...

This article,但是,聲稱代碼無法正常工作。

更可笑的是gpupdate是爲了完成這項工作。

Thx。

+0

它不是* *是瘋狂的。大多數應用程序不檢查配置文件/註冊表項是否自加載以來已被修改,甚至沒有Windows本身。讓我猜,你正在嘗試編輯網絡設置?我無法找到解決此問題的解決方法:S * + 1 * – voyager 2009-09-10 13:49:09

+0

不,我想在運行時禁用圖標通知。 它是瘋了,因爲資源管理器不是「大多數應用程序」,它是一個怪胎殼牌:D – majkinetor 2009-09-10 15:01:47

回答

1

嘗試其中wParam = 0和lParam =「政策」送WM_SETTINGCHANGE消息到任務欄,不知道這是否可以使用腳本完成

+0

它不起作用。我使用SendMessageTimeout來發送消息,結果返回1,這意味着它傳遞了OK。然而,沒有任何反應。 – majkinetor 2009-09-10 17:58:14

+0

你也可以嘗試wparam = 1,檢查鏈接,這是它應該如何工作 – Anders 2009-09-10 19:06:09

+0

沒有它沒有。應用程序必須發送NULL,系統發送1.無論如何,我編輯了這篇文章並給出了C代碼。也許你可以自己嘗試一下。 – majkinetor 2009-09-11 12:41:33

相關問題