2009-06-27 5 views
1

J'ai utilisé le code suivant pour désactiver le panneau de commande:paramètres de registre effet immédiat à l'aide de C#

RegistryKey RegKey = Registry.CurrentUser.CreateSubKey(
    @"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"); 
RegKey.SetValue("NoControlPanel", false, RegistryValueKind.DWord); 
RegKey.Close(); 

Le code ci-dessus désactive le panneau de commande seulement après le redémarrage, je voudrais appliquer le réglage immédiatement sans redémarrer. Aidez-moi, s'il vous plaît.

+0

Il est probablement préférable de le faire sur http://serverfault.com/ –

+0

Je suppose que vous savez que vous pouvez le faire via la stratégie de groupe, donc je suppose également que vous avez des raisons de ne pas le faire de cette façon. –

Répondre

0

Je ne l'ai pas testé, mais je suppose que vous n'avez qu'à fermer tous vos processus explorer.exe pour que cela prenne effet.

Notez que le bureau et la barre des tâches sont fournis par explorer.exe, vous devrez donc en démarrer un nouveau après les avoir tous fermés.

C'est un peu hostile, car l'utilisateur peut avoir des fenêtres d'Explorateur qu'il ne veut pas perdre, alors faites-le seulement si cela ne va pas ennuyer les gens. 8-)

5

Try this ...

private const int HWND_BROADCAST = 0xffff; 
private const int WM_WININICHANGE = 0x001a, WM_SETTINGCHANGE = WM_WININICHANGE, INI_INTL = 1; 

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, INI_INTL); 

[DllImport("user32.dll")] 
private static extern int SendMessage(int hWnd, uint wMsg, uint wParam, uint lParam); 

Cela informera toutes les applications que les modifications ont été apportées au registre, et les programmes qui acceptent la notification shuould recharger leurs paramètres.

Notez que toutes les applications ne peuvent pas faire cela, mais des choses comme le panneau de contrôle devrait.

+0

pas de chance en utilisant le code ci-dessus –

+0

est-il un autre moyen d'actualiser le registre immédiatement –