docs(plugin): исправить обоснование сессионного mutex без Global\
Прежний комментарий утверждал, что Global\ требует отдельной привилегии — ревью опровергло это эмпирически (мьютекс создался без ошибок под тем же непривилегированным пользователем). Настоящая причина: плагин ставится на чужие незнакомые машины, где политика безопасности может отличаться, и отказ Global\ был бы фатальным для запуска сервера, тогда как остаточный риск сессионного mutex (лишняя повторная загрузка при параллельных сессиях) ограничен и не портит установку.
This commit is contained in:
@@ -123,9 +123,15 @@ function Resolve-KompasMcpExecutable {
|
||||
$InstallRoot = Join-Path $env:LOCALAPPDATA 'kompas-mcp'
|
||||
}
|
||||
|
||||
# Именованный mutex без префикса "Global\": это однопользовательская
|
||||
# десктопная машина, не терминальный сервер — сессионного мьютекса достаточно,
|
||||
# а "Global\" на некоторых конфигурациях требует отдельной привилегии.
|
||||
# Именованный mutex без префикса "Global\": сессионного мьютекса достаточно,
|
||||
# чтобы синхронизировать процессы одной сессии Windows. "Global\" не берём
|
||||
# осознанно: плагин ставится на чужие незнакомые машины, где политика
|
||||
# безопасности может запретить создание глобальных объектов — тогда отказ
|
||||
# WaitOne/New-Object был бы фатальным и сломал бы запуск сервера. Цена отказа
|
||||
# от "Global\" невелика: при одновременном старте из разных сессий (RDP +
|
||||
# консоль) возможна лишняя повторная загрузка, но не порча установки — от неё
|
||||
# защищают проверка целевого каталога, сверка SHA256 и обработка IOException
|
||||
# при переносе каталога.
|
||||
$mutex = New-Object System.Threading.Mutex($false, "kompas-mcp-install-$($Lock.version)")
|
||||
[void]$mutex.WaitOne()
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user