Мне нужно обновить DLL-оболочку оболочки и убедиться, что она не используется, я убиваю текущий процесс проводника Windows, используя команду taskkill/F/IM explorer.exe.Как запустить Windows Explorer с панелью задач в C#
Но когда я пытаюсь снова запустить проводник, он не возвращает панель задач, я ищу различные решения, которые возвращают панель задач, но проблема с ними заключается в том, что она работает с Windows 8.1, 10, но в Windows 7 64-разрядная , как-то он не начинается, а также случайным образом (иногда он начинается).
Ниже приведены решения, которые я пытался:
Решение 1:
Process.Start(Path.GetDirectoryName(Environment.SystemDirectory) + "\\Explorer.exe");
Решение 2:
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();
Process.Start(Environment.SystemDirectory + "\\..\\explorer.exe");
Решение 3:
var ProcessStartInfo = new ProcessStartInfo();
string anyCommand = "%systemroot%\\sysnative\\cmd.exe /c start /B explorer.exe";
ProcessStartInfo.UseShellExecute = false;
ProcessStartInfo.WorkingDirectory = System.IO.Path.Combine(System.IO.Path.GetPathRoot(Environment.SystemDirectory), "Windows\\System32");
ProcessStartInfo.FileName = System.IO.Path.Combine(System.IO.Path.GetPathRoot(Environment.SystemDirectory), "Windows\\System32\\cmd.exe");
//ProcessStartInfo.Verb = "runas";
ProcessStartInfo.Arguments = "/c " + anyCommand;
ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
using (var exeProcess = Process.Start(ProcessStartInfo))
{
if (exeProcess != null)
{
exeProcess.WaitForExit();
}
}
Thnx за предложение, но после прочтения этого блога я не считаю это хорошим вариантом. https://marc.durdin.net/2011/09/why-you-should-not-use-movefileex-with-movefile_delay_until_reboot-2/ – zee