Member 10410972 Ответов: 1

Перезапуск explorer.exe и повторное открытие тех же окон после перезагрузки explorer.exe? С#


Hello everyone,
This below is the code to restart explorer.exe and it works.

I would like to after the restart explorer.exe, it happens reopen the same windows, 
if they were opened before restart explorer.exe. Thank you.


Что я уже пробовал:

private void restartexplorer()
        {
            const string explorer = "explorer.exe";
            string explorerPath = string.Format("{0}\\{1}", Environment.GetEnvironmentVariable("WINDIR"), explorer);
            foreach (Process process in Process.GetProcesses())
            {
                // In case we get Access Denied
                try
                {
                    if (string.Compare(process.MainModule.FileName, explorerPath, StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        process.Kill();
                    }
                }
                catch
                {
                  //
                }
            }       
        }

ZurdoDev

Затем выключите открытые окна и снова откройте их. Где ты застрял?

ZurdoDev

Кроме того, вы действительно пробовали этот код?

1. я сомневаюсь, что ваш код имеет разрешения на убийство проводника.
2. я почти уверен, что существующие окна все равно остаются открытыми.

Dave Kreskowiak

На самом деле код будет иметь разрешения на убийство проводника. Проводник запускается от имени пользователя, вошедшего в систему, а не от имени системы.

В системе, где несколько пользователей вошли в систему, он может убить только свою копию Explorer. Он не сможет убить никого другого.

ZurdoDev

Ладно, в этом есть смысл. Я доверяю тебе.

Richard MacCutchan

Какова именно цель этого кода?

1 Ответов

Рейтинг:
2

Jochen Arndt

Показанный код не запускает проводник, и вы не можете перезапустить его. Все, что вы можете сделать, это запустить другой экземпляр.

Если вы хотите открыть проводник для определенного каталога, просто передайте его в качестве аргумента командной строки:

explorer <directory>

Но, возможно, будет трудно получить папки, которые были открыты раньше. В зависимости от версий Windows вы можете получить список последних папок или элементов из реестра или shell:Recent.


Member 10410972

Ладно, теперь я понимаю. Спасибо.