Почему программы только не уничтожают и перезапускают explorer.exe?

Да, вы можете использовать

s.scan(/(?:\G(?!\A)|\A(?=(?:#\d\s*)*\z))\s*\K#\d/)

См. Демонстрацию regex

Подробности

  • [ 112] - два варианта:
    • \G(?!\A) - конец предыдущего успешного совпадения
    • | - или
    • \A(?=(?:#\d\s*)*\z) - начало строки ([116 ]), за которым следуют 0 или более повторений # + цифра + 0+ пробелов и затем следует конец строки
  • \s* - 0+ пробелов
  • ]
  • \K - оператор сброса совпадений, отбрасывающий сопоставленный текст
  • #\d - символ #, а затем цифра

Короче: начало первой позиции строки соответствует, но только если строка справа (то есть вся строка) соответствует желаемому шаблону. Так как эта проверка выполняется с предварительным просмотром, индекс регулярного выражения остается там, где он был, и затем сопоставление происходит все время ТОЛЬКО после действительного совпадения благодаря оператору \G (он соответствует началу строки или концу предыдущего совпадения, поэтому (?!\A) используется для вычитания позиции начальной строки).

Демонстрация Ruby :

rx = /(?:\G(?!\A)|\A(?=(?:#\d\s*)*\z))\s*\K#\d/
p "#1 #2".scan(rx)
# => ["#1", "#2"]
p "#1 NO #2".scan(rx)
# => []

7
задан Malfist 18 May 2009 в 17:36
поделиться

10 ответов

Завершение работы и перезапуск проводника не приведет к тому, что сделает перезапуск системы:

1) Ни одно из запущенных в данный момент приложений не будет обновлено.

2) Это может также приводят к проблемам со стабильностью в системе. Я, в частности, заметил проблемы с моим графическим драйвером, который не обновлялся должным образом после выключения / перезапуска проводника.

3) Это просто как бы пахнет;) Убивать процесс как часть установки кажется неприятным.

13
ответ дан 6 December 2019 в 05:39
поделиться

Перезагрузка Windows - это очень хорошо протестированная операция. Выйти / войти тоже. Вы можете ожидать, что все стороннее программное обеспечение было протестировано с помощью перезапуска, и почти все было протестировано с помощью выхода из системы, входа в систему.

Как вы думаете, какая часть программного обеспечения проверяется с помощью kill & respawn explorer.exe? Вероятно, далеко не так много, и, конечно же, далеко не так тщательно.

Так что, если вы распространяете внутреннее, в очень хорошо контролируемую среду, конечно, продолжайте и убейте и возродите explorer.exe. Но не делайте этого иначе, так как вы переводите компьютер пользователя в очень плохо протестированное состояние, и все может загадочным образом сломаться, пока он не перезагрузится.

6
ответ дан 6 December 2019 в 05:39
поделиться

Я видел проблемы, когда значки в области уведомлений не отображались после перезапуска проводника (обычно после того, как он перестает отвечать, и я необходимо убить его).

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

6
ответ дан 6 December 2019 в 05:39
поделиться

Проводник может иметь несохраненное состояние (открытые окна, настройки просмотра папок и т. д.), которое теряется при внезапном перезапуске). Я бы ненавидел, если бы установщик убивал мой explorer.exe, не спрашивая, и я не уверен, что считаю это улучшением по сравнению с простой перезагрузкой.

В списке вещей, которые не обрабатываются перезапуском explorer.exe в особенности заменяют библиотеки DLL, которые используются в настоящее время, и программы (помимо explorer.exe), которые не прослушивают события изменения реестра, но хранят информацию оттуда.

3
ответ дан 6 December 2019 в 05:39
поделиться

Возможно, были внесены другие изменения, требующие на больше , чем перезапуск explorer.exe. Кроме того, как вы сказали, перезапуск explorer.exe может быть весьма тревожным для конечных пользователей.

3
ответ дан 6 December 2019 в 05:39
поделиться

Всегда ли нужно перезапускать проводник?

Однажды у меня было приложение, которое устанавливало счетчик монитора производительности, который должен был использоваться моим приложением и Perfmon (когда он был запущен), поэтому его нужно устанавливать только для того, чтобы убедиться, что какое-либо приложение было закрыто. Простые ... кроме драйвера (не могу вспомнить, какой из них, или, к сожалению, называть производителя), который загружал каждую объектную dll-библиотеку perfmon и держал их все заблокированными. В результате моему приложению потребовалась перезагрузка.

Теперь, если у вас есть инструмент, который может определить, в каких процессах какие из ваших устанавливаемых файлов заблокированы, и предложить их закрыть, хотя пользователь должен сам решить, один из этих процессов может быть важен для Windows (например, служба рабочей станции или svchost) или важен для пользователя (например, Word с несохраненной работой за день) (что '

1
ответ дан 6 December 2019 в 05:39
поделиться

Используйте параметр перезагрузки вместо обновления explorer.exe. Уже ожидается, что большинство программ, устанавливаемых в Windows, используют перезагрузку, поэтому пользователи привыкли к перезагрузке при установке программного обеспечения, и это дает им возможность закрыть любые другие окна и сохранить данные. Во-вторых, как уже указывалось, при перезагрузке explorer.exe ваш текущий экран без предупреждения исчезает, и создается впечатление, что что-то пошло не так, и вся их информация потеряна.

1
ответ дан 6 December 2019 в 05:39
поделиться

Есть довольно много вещей, которые можно сделать в реестре для установленных вещей, которые происходят при следующей перезагрузке; например, записи под ключом «RunOnce» запускаются, ну, один раз, при следующей загрузке. Есть много приложений для установки, которые зависят от этого поведения; и поскольку Microsoft не объявила устаревшим эту функциональность и не нашла хорошего обходного пути, люди продолжают писать программное обеспечение, которое ожидает этой функциональности и зависит от нее.

1
ответ дан 6 December 2019 в 05:39
поделиться

Перезапуск проводника имеет неприятный побочный эффект в виде отмены текущей среды пользователя. Такие вещи, как кнопки панели задач, ожидающие операции и т.п., будут потеряны, если вы просто убьете explorer.exe.

0
ответ дан 6 December 2019 в 05:39
поделиться

Почему бы не позволить пользователю выбрать, перезагрузить или перезапустить проводник.

Помните, однако, что средний пользователь не будет знать, что это означает или влечет за собой, поэтому убедитесь, что ваши пользователи действительно ' достаточно технически ».

0
ответ дан 6 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: