Orion9

|
Posted: Fri May 29, 2026 13:06 Post subject: |
|
|
| FallenAngel wrote: | | Понаблюдаю. |
Если ТС сам закрывается (на что может указывать запись в логе), это плохо. С чего бы ему самому закрываться? Если только скрипт какой-то чудит ... А monkey business от маестро хорошо известен: клик по невидимой кнопке (окну) триала приводит к описанному вами явлению.
| FallenAngel wrote: | | Нужно понять, это глобальный баг или что-то частное. |
Больше похоже на первое, чем на второе. Судя из описания, скрипт меняет %Path% на уровне пользователя
| Code: | pathman.ps1. Добавляет \ удаляет каталог в пользовательскую переменную %PATH%. Поддерживает пакетный режим. |
А это приводит к отправке сообщения WM_SETTINGCHANGE
| Quote: | | Когда вы нажимаете «ОК» в системном диалоговом окне переменных сред, Windows отправляет специальное широковещательное сообщение WM_SETTINGCHANGE всем открытым окнам [1]. Некоторые среды разработки (IDE), продвинутые эмуляторы терминалов (например, VS Code, Fleet, или некоторые плагины для Windows Terminal) перехватывают это сообщение [1]. Вместо того чтобы просто проигнорировать его, они пытаются «помочь» пользователю: динамически перечитывают актуальные переменные из реестра и полностью перезаписывают ими текущий %PATH% вашего процесса.В результате все временные пути, которые вы добавляли локально внутри процесса (например, через скрипты или код), бесследно стираются. |
Судя по всему, тотал перехватывает сообщение WM_SETTINGCHANGE и заново перечитывает переменные окружения, что приводит к сбросу изменений, сделанных через Autorun.
Проверить можно
| Code: | # WM_WININICHANGE
SetMessageAction /P 0x001A "WinIniCallback"
Func WinIniCallback(hWnd, uMsg, wParam, lParam)
MsgBox(GetEnv("path"), "WM_WININICHANGE", 48+4096)
If lParam <> 0 Then SendMessage(AUTORUN_TCHANDLE, 0x001A, 0, 0)
EndFunc |
Сначала приходит системное сообщение (пути еще не успели измениться тоталом). Второе сообщение отсылает сам Autorun — пути сброшены.
Не знаю, что вам с этим делать. Наверное, можно отказаться пока от скрипта, это самый простой вариант. Добавлять нужные пути только через Autorun  |
|