RegKey Setvalue не работает в разных версиях Windows - PullRequest
0 голосов
/ 25 октября 2019

вот моя проблема:

У меня есть приложение, написанное на C #. Приложение работает как 32-битный процесс. Внутри приложения я хочу убить процесс explorer.exe Вот как я это делаю:

private void killExplorer()
{
  try
  {
     RegistryKey regKey = Registry.LocalMachine;

     regKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\", true);
     regKey.SetValue("AutoRestartShell", 0);


     var processes = Process.GetProcessesByName("explorer");
     Console.Write("Killing Explorer... ");
     foreach (var process in processes)
     {
        process.Kill();
        process.WaitForExit();
     }
     Console.WriteLine("Done");
  }
  catch(Exception ex)
  {
     log.Debug(ex);
     Console.WriteLine(ex);
  }
}

Если я не установлю RegKey AutorestartShell на 0, то Explorer сразу же запустится снова.

Хорошо, теперь я проверил это, и оно отлично работает на моей машине для разработки (W10 x64). Мое приложение должно работать с Windows XP до W10. Уничтожение проводника работает только на W10 x64 и W10 x32.

Проводник автоматически перезапускается на W7 и W8. И regKey никогда не устанавливается, даже если он существует.

Любая помощь очень ценится. Спасибо

...