вот моя проблема:
У меня есть приложение, написанное на 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 никогда не устанавливается, даже если он существует.
Любая помощь очень ценится. Спасибо