Изменение реестра оболочки

В начале моего приложения я меняю значение оболочки реестра на пользовательскую оболочку и убиваю explorer.exe (это делается вне приложения), я хочу разрешить бэкдору вернуться в исходную оболочку и вернуть проводник .EXE. возвращение процесса у меня отлично работает, но когда я запускаю свой код для изменения значения реестра, исключение не выдается, но значение не изменяется, когда я проверяю regedit, это мой код (увидел его здесь по другому вопросу):

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

Пожалуйста помоги


person meirrav    schedule 02.12.2012    source источник


Ответы (1)


В вашем коде вы фактически устанавливаете значение

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

Поскольку WOW64 перенаправляет некоторые ключи реестра, проверьте MSDN, чтобы получить более подробную информацию.

Попробуй это:

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();
person bhuang3    schedule 02.12.2012