2016-01-19 1 views
0

Мне нужно обновить 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(); 
    } 
} 

ответ

0

Если вы хотите замените файл, который в нас e, вы всегда можете переименовать существующий файл и скопировать новую версию с исходным именем рядом с существующим.

После этого появляется вызов Windows API (имя escapes me), которое позволяет запланировать удаление переименованного файла при перезагрузке.

+0

Thnx за предложение, но после прочтения этого блога я не считаю это хорошим вариантом. https://marc.durdin.net/2011/09/why-you-should-not-use-movefileex-with-movefile_delay_until_reboot-2/ – zee

Смежные вопросы