Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] перезагрузить оболочку Windows (http://forum.oszone.net/showthread.php?t=211864)

shao 25-07-2011 11:18 1719323

перезагрузить оболочку Windows
 
Пытаюсь перезагрузить оболочку Windows из пакетного файла командой:

Код:

RUNDLL32 SHELL32, SHExitWindowsEx -1
говорит, что ошибка в SHELL32, нет такого параметра SHExitWindowsEx



Что, на Windows XP такие команды не действуют ?

Если так - в таком случае подскажите пожалуйста, как перезагрузить оболочку (вместе с реестром) ?
Задача - после установок различных программ сделать перезагрузку/обновление (реестр в том числе обязательно) не перезагружая компьютер.
(Можно не средствами CMD/BAT )

Спасибо.

gora 25-07-2011 13:01 1719405

Цитата:

Цитата shao
сделать перезагрузку/обновление (реестр в том числе обязательно) не перезагружая компьютер.
(Можно не средствами CMD/BAT ) »

Утилита NirCmd команда sysrefresh

shao 27-07-2011 23:02 1721166

Цитата:

Цитата gora
Утилита NirCmd команда sysrefresh »

После применения этой утилиты с командой
Код:

nircmd.exe sysrefresh
ничего не происходит.

То есть я внёс изменения в реестр с помощью твика. Применил команду, но изменений нет.
Добился отображения изменений простой перезагрузкой explorer.exe
Может кто-нибудь подскажет ещё способ перезагрузки оболочки и реестра без перезагрузки компьютера ?

Iska 28-07-2011 03:55 1721270

shao, попробуйте ещё команду shellrefresh.

Попробуйте также:
Код:

"%SystemRoot%\System32\RUNDLL32.EXE" user32.dll,UpdatePerUserSystemParameters
хотя есть сведения, что она не везде работает.

Цитата:

Цитата shao
Задача - после установок различных программ сделать перезагрузку/обновление (реестр в том числе обязательно) не перезагружая компьютер.»

В общем случае желаемый результат не будет достижим по вполне объективным причинам.

shao 28-07-2011 09:34 1721358

Iska, спасибо я эти команды также пробовал. Забыл указать об этом, извините.
При применении твиков реестра, касающихся, в основном визуальных изменений, эти команды не срабатывают. То есть изменения не отображаются, пока не перезагрузишь проводник или , вообще сам компьютер...
Команды , с использованием user32.dll по-моему не работают на XP.
Попробую...

***********************************************

Цитата:

Цитата shao
Команды , с использованием user32.dll по-моему не работают на XP. »

Вроде срабатывает (по крайней мере нет ошибок), но безрезультатно...

Vadikan 29-07-2011 10:09 1722087

Цитата:

Цитата shao
Может кто-нибудь подскажет ещё способ перезагрузки оболочки и реестра без перезагрузки компьютера ? »

HKCU/Проводник https://www.outsidethebox.ms/11418/#2

shao 29-07-2011 17:52 1722409

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)

Достигается ли эффект перезагрузки проводника и реестра такими способами ?

Vadikan 29-07-2011 19:16 1722473

Да, второй не действует. Ну и что? Зато действует первый способ :)

Цитата:

Цитата shao
Достигается ли эффект перезагрузки проводника и реестра такими способами ? »

Достигается, конечно. Разница между описанным мной способом по сравнению с диспетчером задач и taskkill описана по той же ссылке.

Iska 29-07-2011 22:09 1722555

Цитата:

Цитата shao
не действует на XP. »

А так: OFF: завершение работы Проводника без снятия процесса «explorer.exe»?

Vadikan 29-07-2011 22:11 1722557

Iska, так это первый способ по моей ссылке :)

shao 30-07-2011 00:56 1722643

Цитата:

Цитата Iska
А так:...... »

Действительно - это и есть тот способ , который предложил Vadikan

Iska, а как же
Цитата:

Цитата Iska
......без снятия процесса «explorer.exe»? »

если этот процесс потом нужно запускать через Диспетчер ?!! :o

Я так понял , что метод один и тот же - перезагрузка оболочки методом остановки процесса explorer.exe, с последующим его перезапуском.

Вопрос остаётся тот же:
Если других способов нет - подходят ли варианты , описанные в посте
№7 для перезагрузки оболочки и реестра ?
(есть сомнения на счёт реестра ...)

sov44 30-07-2011 09:37 1722703

Цитата:

Цитата shao
есть сомнения на счёт реестра »

shao, тестил на 2 программах, код перезагрузки реестра работает.
Код:

regedit /s 7.reg
start nircmd.exe sysrefresh

p.s. nircmd v.2.65 Windows XP SP3

Iska 31-07-2011 01:57 1723070

Цитата:

Цитата Vadikan
Iska, так это первый способ по моей ссылке »

Каюсь, грешен:
читать дальше »
Прочитав,
Цитата:

Цитата shao
Vadikan, Второй способ , который описывается в приведённой выше Вами ссылке :
Цитата:

Способ второй.
........Откройте меню «Пуск», затем, удерживая нажатыми клавиши CTRL+SHIFT,
щелкните правой кнопкой мыши по кнопке завершения работы или по соседству
с ней. Из меню выберите пункт Выход из проводника.
не действует на XP. »

я, не ознакомившись сам с первоисточником, привёл ссылку в #9.

Лишь прочитав в #10:
Цитата:

Цитата Vadikan
Iska, так это первый способ по моей ссылке »

я обратил внимание на слова «Второй способ , который описывается…» и «это первый способ…», сходил по ссылке и узрел, что всё, что потребно, там присутствовало, коллега shao вначале, возможно, просто посмотрел сие, а я, к сожалению, не проверил первоисточник.

Приношу Вам и коллеге shao свои извинения.

Цитата:

Цитата shao
Действительно - это и есть тот способ , который предложил Vadikan »

Да. Мои изъяснения и извинения — под спойлером выше.

Цитата:

Цитата shao
Iska, а как же
Цитата:

Цитата Iska
…без снятия процесса «explorer.exe»?

если этот процесс потом нужно запускать через Диспетчер ?!! »

Без снятия процесса — это означает, что мы процесс не снимаем, а отправляем ему уведомление с просьбой о завершении, в результате чего у него есть время и возможность выполнить какие-то операции перед своим завершением. А так — да. Запускать потом надо.
Цитата:

Цитата shao
Я так понял , что метод один и тот же - перезагрузка оболочки методом остановки процесса explorer.exe, с последующим его перезапуском. »

taskkill — отчасти «да», ибо он отсылает уведомление о завершении в оконную процедуру процесса; при применении же параметра «/f» — просто принудительно завершает процесс.

Коллеги, пожалуйста, забудьте о таком термине, как «перезагрузка реестра», ибо это некорректно. Есть два стандартных способа: выгрузить и заново запустить приложение, дабы оно само прочитало новое содержимое реестра, либо отправить или разослать сообщение WM_SETTINGCHANGE. И даже в последнем случае, если приложение следит за данными сообщениями, то само действие остаётся на усмотрение приложения — читать или не читать новые данные из реестра.

shao 31-07-2011 21:10 1723518

Iska, спасибо большое за разъяснения !

Я правильно понял:
- чтобы корректно, например сработал твик, касающийся визуальных изменений на рабочем столе
достаточно перезагрузить эксплорер. И т.д.
Если , например твик касается работы другого приложения или службы , чтобы он сработал - нужно перезапустить соответствующее приложение или службу.
?

Вот только у меня такая ситуация сложилась:
Устанавливаю программу, перед этим деинсталлировав старую версию.
При установке программы идет запрос на перезагрузку компьютера в связи с деинсталляцией предыдущей.
(Хотя все "хвосты" за ней подчистил вручную везде.)
Никакие методы обговоренные выше не помогают. Всё-таки приходится перезагружать компьютер.

Вот и пытаюсь понять, что происходит и как избежать перезагрузки ПК. Чем её можно заменить ?

gora 31-07-2011 22:32 1723586

Цитата:

Цитата shao
программы идет запрос на перезагрузку компьютера в связи с деинсталляцией предыдущей »

Необходимость перезагрузки при деинсталляции не всегда связана с "хвостами" в реестре. Иногда деинсталлятор не может удалите некоторые файлы занятые системой и откладывает их удаление до перезагрузки (примером может служить WinRAR в некоторых случаях).
Нужно принять обязательность перезагрузки, в некоторых случаях, как суровую необходимость и смирится с ней. Даже M$ после установки большинства своих обновлений требует перезагрузки, значит и они не знают другого способа... ;)

shao 31-07-2011 22:49 1723601

Цитата:

Цитата gora
Необходимость перезагрузки при деинсталляции не всегда связана с "хвостами" в реестре. »

Я чистил всё и не только реестр. Удалял всё вручную....

Но , Вы gora, меня немного "успокоили" :)
Спасибо! :up

sov44 16-02-2017 17:12 2712295

Появился-ли способ автоматического обновления реестра без перезагрузки пк\explorer для Windows 7 и выше после внесения в реестр изменений ? Команда nircmd.exe sysrefresh на этих системах не действует.


Время: 22:59.

Время: 22:59.
© OSzone.net 2001-