| View previous topic :: View next topic |
| Author |
Message |
Orion9

Joined: 01 Jan 2024 Posts: 1147
|
(Separately) 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  |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1147
|
(Separately) Posted: Fri May 29, 2026 20:04 Post subject: |
|
|
FallenAngel
Проверил на таких командах в PowerShell
| Code: | # Получаем текущий ПОЛЬЗОВАТЕЛЬСКИЙ Path из реестра
$oldUserPath = [Environment]::GetEnvironmentVariable("PATH", "User")
# Формируем новую строку, добавив ваш путь через точку с запятой
$newUserPath = "$oldUserPath;C:\MyFolder"
# Записываем обновленный список обратно в профиль пользователя
[Environment]::SetEnvironmentVariable("PATH", $newUserPath, "User") |
Да, теперь точно можно сказать, что SetEnvironmentVariable служит триггером для WM_SETTINGCHANGE, на которое реагирует тотал. Можно, конечно, следить за этим из Autorun, но стоит ли. По-моему, проще совсем отказаться от SetEnv /A PATH и менять переменные окружения из ps1 скрипта. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|