2012-12-02 2 views
0

Au début de mon application, je change la valeur de shell du registre en un shell personnalisé et je tue le fichier explorer.exe (c'est fait en dehors de l'application), je veux permettre à une porte dérobée de retourner au shell original et ramener l'explorer.exe. brining le processus marche bien pour moi mais quand je cours mon code pour changer la valeur de registre aucune exception n'est levée mais la valeur ne change pas quand je vérifie regedit, c'est mon code (vu ici sur une question différente) :Modification du registre du shell

 RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true); 
     regKey.SetValue("Shell", "explorer.exe", RegistryValueKind.String); 
     regKey.Close(); 

S'il vous plaît aider

Répondre

4

Dans votre code, vous réellement définissez la valeur de

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell 

Parce que certaines clés de registre sont redirigés par WOW64, s'il vous plaît vérifier MSDN pour obtenir plus de détails.

Essayez ceci:

RegistryKey localMachine = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); 

RegistryKey regKey = localMachine .OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true); 
regKey.SetValue("Shell", "explorer.exe", RegistryValueKind.String); 
regKey.Close(); 
+0

travaillé, merci beaucoup – meirrav

Questions connexes