Показать полную графическую версию : [решено] перезагрузить оболочку Windows
Пытаюсь перезагрузить оболочку Windows из пакетного файла командой:
RUNDLL32 SHELL32, SHExitWindowsEx -1
говорит, что ошибка в SHELL32, нет такого параметра SHExitWindowsEx
http://img837.imageshack.us/img837/9027/23131471.th.jpg (http://imageshack.us/photo/my-images/837/23131471.jpg/)
Что, на Windows XP такие команды не действуют ?
Если так - в таком случае подскажите пожалуйста, как перезагрузить оболочку (вместе с реестром) ?
Задача - после установок различных программ сделать перезагрузку/обновление (реестр в том числе обязательно) не перезагружая компьютер.
(Можно не средствами CMD/BAT )
Спасибо.
сделать перезагрузку/обновление (реестр в том числе обязательно) не перезагружая компьютер.
(Можно не средствами CMD/BAT ) »
Утилита NirCmd команда sysrefresh (http://www.nirsoft.net/utils/nircmd2.html#sysrefresh)
Утилита NirCmd команда sysrefresh »
После применения этой утилиты с командой
nircmd.exe sysrefreshничего не происходит.
То есть я внёс изменения в реестр с помощью твика. Применил команду, но изменений нет.
Добился отображения изменений простой перезагрузкой explorer.exe
Может кто-нибудь подскажет ещё способ перезагрузки оболочки и реестра без перезагрузки компьютера ?
shao, попробуйте ещё команду shellrefresh (http://www.nirsoft.net/utils/nircmd2.html#shellrefresh).
Попробуйте также:
"%SystemRoot%\System32\RUNDLL32.EXE" user32.dll,UpdatePerUserSystemParameters
хотя есть сведения, что она не везде работает.
Задача - после установок различных программ сделать перезагрузку/обновление (реестр в том числе обязательно) не перезагружая компьютер.»
В общем случае желаемый результат не будет достижим по вполне объективным причинам.
Iska, спасибо я эти команды также пробовал. Забыл указать об этом, извините.
При применении твиков реестра, касающихся, в основном визуальных изменений, эти команды не срабатывают. То есть изменения не отображаются, пока не перезагрузишь проводник или , вообще сам компьютер...
Команды , с использованием user32.dll по-моему не работают на XP.
Попробую...
***********************************************
Команды , с использованием user32.dll по-моему не работают на XP. »
Вроде срабатывает (по крайней мере нет ошибок), но безрезультатно...
Может кто-нибудь подскажет ещё способ перезагрузки оболочки и реестра без перезагрузки компьютера ? »
HKCU/Проводник http://www.outsidethebox.ms/11418/#2
Vadikan, Второй способ , который описывается в приведённой выше Вами ссылке :
Способ второй.
........Откройте меню «Пуск», затем, удерживая нажатыми клавиши CTRL+SHIFT,
щелкните правой кнопкой мыши по кнопке завершения работы или по соседству
с ней. Из меню выберите пункт Выход из проводника.не действует на XP.
Другие , предложенные способы требуют дополнительных "телодвижений"
- перезапуск explorer.exe с Диспетчера задач....
Не проще ли, простым способом, с батника перезагрузиться. Например:
TASKKILL /F /IM explorer.exe
start explorer.exe
или с VBS так:
On Error GoTo 0
For Each Process in GetObject("winmgmts:"). _
ExecQuery ("select * from Win32_Process where name='explorer.exe'")
Process.terminate(0)
Next
Set WSHShell = Nothing
WScript.Quit(0)
Достигается ли эффект перезагрузки проводника и реестра такими способами ?
Да, второй не действует. Ну и что? Зато действует первый способ :)
Достигается ли эффект перезагрузки проводника и реестра такими способами ? »
Достигается, конечно. Разница между описанным мной способом по сравнению с диспетчером задач и taskkill описана по той же ссылке.
не действует на XP. »
А так: OFF: завершение работы Проводника без снятия процесса «explorer.exe» (http://forum.script-coding.com/viewtopic.php?id=3887)?
Iska, так это первый способ по моей ссылке :)
А так:...... »
Действительно - это и есть тот способ , который предложил Vadikan
Iska, а как же ......без снятия процесса «explorer.exe»? »если этот процесс потом нужно запускать через Диспетчер ?!! :o
Я так понял , что метод один и тот же - перезагрузка оболочки методом остановки процесса explorer.exe, с последующим его перезапуском.
Вопрос остаётся тот же:
Если других способов нет - подходят ли варианты , описанные в посте
№7 (http://forum.oszone.net/post-1722409-7.html) для перезагрузки оболочки и реестра ?
(есть сомнения на счёт реестра ...)
есть сомнения на счёт реестра »
shao, тестил на 2 программах, код перезагрузки реестра работает.
regedit /s 7.reg
start nircmd.exe sysrefresh
p.s. nircmd v.2.65 Windows XP SP3
Iska, так это первый способ по моей ссылке »
Каюсь, грешен:
Прочитав,
Vadikan, Второй способ , который описывается в приведённой выше Вами ссылке :
Способ второй.
........Откройте меню «Пуск», затем, удерживая нажатыми клавиши CTRL+SHIFT,
щелкните правой кнопкой мыши по кнопке завершения работы или по соседству
с ней. Из меню выберите пункт Выход из проводника.
не действует на XP. »
я, не ознакомившись сам с первоисточником (http://www.outsidethebox.ms/11418/#2), привёл ссылку в #9 (http://forum.oszone.net/post-1722555-9.html).
Лишь прочитав в #10 (http://forum.oszone.net/post-1722557-10.html):
Iska, так это первый способ по моей ссылке »
я обратил внимание на слова «Второй способ , который описывается…» и «это первый способ…», сходил по ссылке и узрел, что всё, что потребно, там присутствовало, коллега shao вначале, возможно, просто посмотрел сие, а я, к сожалению, не проверил первоисточник.
Приношу Вам и коллеге shao свои извинения.
Действительно - это и есть тот способ , который предложил Vadikan »
Да. Мои изъяснения и извинения — под спойлером выше.
Iska, а как же
…без снятия процесса «explorer.exe»?
если этот процесс потом нужно запускать через Диспетчер ?!! »
Без снятия процесса — это означает, что мы процесс не снимаем, а отправляем ему уведомление с просьбой о завершении, в результате чего у него есть время и возможность выполнить какие-то операции перед своим завершением. А так — да. Запускать потом надо.
Я так понял , что метод один и тот же - перезагрузка оболочки методом остановки процесса explorer.exe, с последующим его перезапуском. »
taskkill — отчасти «да», ибо он отсылает уведомление о завершении в оконную процедуру процесса; при применении же параметра «/f» — просто принудительно завершает процесс.
Коллеги, пожалуйста, забудьте о таком термине, как «перезагрузка реестра», ибо это некорректно. Есть два стандартных способа: выгрузить и заново запустить приложение, дабы оно само прочитало новое содержимое реестра, либо отправить или разослать сообщение WM_SETTINGCHANGE (http://msdn.microsoft.com/en-us/library/ms725497(v=vs.85).aspx). И даже в последнем случае, если приложение следит за данными сообщениями, то само действие остаётся на усмотрение приложения — читать или не читать новые данные из реестра.
Iska, спасибо большое за разъяснения !
Я правильно понял:
- чтобы корректно, например сработал твик, касающийся визуальных изменений на рабочем столе
достаточно перезагрузить эксплорер. И т.д.
Если , например твик касается работы другого приложения или службы , чтобы он сработал - нужно перезапустить соответствующее приложение или службу.
?
Вот только у меня такая ситуация сложилась:
Устанавливаю программу, перед этим деинсталлировав старую версию.
При установке программы идет запрос на перезагрузку компьютера в связи с деинсталляцией предыдущей.
(Хотя все "хвосты" за ней подчистил вручную везде.)
Никакие методы обговоренные выше не помогают. Всё-таки приходится перезагружать компьютер.
Вот и пытаюсь понять, что происходит и как избежать перезагрузки ПК. Чем её можно заменить ?
программы идет запрос на перезагрузку компьютера в связи с деинсталляцией предыдущей »
Необходимость перезагрузки при деинсталляции не всегда связана с "хвостами" в реестре. Иногда деинсталлятор не может удалите некоторые файлы занятые системой и откладывает их удаление до перезагрузки (примером может служить WinRAR в некоторых случаях).
Нужно принять обязательность перезагрузки, в некоторых случаях, как суровую необходимость и смирится с ней. Даже M$ после установки большинства своих обновлений требует перезагрузки, значит и они не знают другого способа... ;)
Необходимость перезагрузки при деинсталляции не всегда связана с "хвостами" в реестре. »
Я чистил всё и не только реестр. Удалял всё вручную....
Но , Вы gora, меня немного "успокоили" :)
Спасибо! :up
Появился-ли способ автоматического обновления реестра без перезагрузки пк\explorer для Windows 7 и выше после внесения в реестр изменений ? Команда nircmd.exe sysrefresh на этих системах не действует.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.