Skip to Content
Запись до 7 мая · Защиты ВКР: 23 и 30 мая 2026
Устранение ошибок лицензирования

Устранение ошибок лицензирования NX

Этот раздел разбирает три связанные между собой проблемы: ошибку NX License Error: Cannot find license file [-1], настройку универсального сервера лицензий SolidSQUAD и конфликты портов при параллельной работе нескольких версий NX (например, NX 10 и NX 1899) на одной машине.

Что нужно знать заранее

Документация рассчитана на администраторов Windows, знакомых с управлением службами через services.msc, командной строкой и PowerShell, системными переменными среды и настройкой исключений в антивирусах (Windows Defender, Kaspersky Endpoint Security).

Если вы переходите с устаревшей версии вроде NX 10 на актуальный Continuous Release (NX 1899 и выше), среду лицензирования FlexNet придётся перестраивать с нуля.

О чём говорит ошибка [-1]

Сообщение NX License Error: Cannot find license file. Check that SPLM_LICENSE_SERVER is set correctly. [-1] означает, что клиентская часть NX запустилась, но не нашла системную переменную с адресом сервера или не смогла установить сетевое соединение с FlexNet по указанным портам.

За этим обычно стоит одна из четырёх причин:

  • антивирус (Kaspersky или Defender) поместил в карантин или удалил ключевые бинарники сервера — lmgrd.exe, ugslmd.exe, msys-2.0.dll;
  • устаревшие серверы (например, Siemens PLM License Server) держат порты 28000/27800 и не дают подняться новому;
  • переменная SPLM_LICENSE_SERVER отсутствует, содержит опечатки или конфликтует с UGS_LICENSE_SERVER;
  • был пропущен патч клиентской части — файл реестра .reg и подмена .dll в директории программы.

Дальше каждая причина разбирается отдельно, с готовыми скриптами.


Этап 1. Конфликты со старыми серверами (NX 10 vs NX 1899)

При параллельной установке старых и новых версий NX возникает конфликт архитектур серверов лицензий.

Старый сервер обычно ставился как служба Siemens PLM License Server, работал с файлом splm6.lic и резервировал порт 28000. Новый универсальный сервер от SolidSQUAD ставится как SSQ FLEXLM Service, покрывает лицензии для всех версий NX от 5.0 до актуальных и слушает одновременно порты 27800 и 28000.

Когда оба сервера пытаются стартовать при загрузке Windows, происходит блокировка семафора (Semaphore lock), и новый сервер падает.

Симптомы в логах FlexNet

В файле журнала сервера C:\SolidSQUAD_License_Servers\Logs\lmgrd.log это выглядит так:

21:13:03 (ugslmd) cannot create semaphore lock (Global\LM_ugslmd_SEMAPHORE): 5 21:13:03 (ugslmd) EXITING DUE TO SIGNAL 32 Exit reason 9 21:13:08 (lmgrd) ugslmd exited with status 32 (Exited because another server was running) 21:13:08 (lmgrd) MULTIPLE "ugslmd" license server systems running.

Решение: отключить старый сервер и очистить память

Новый универсальный сервер полностью заменяет старый, поэтому от старого нужно избавиться. Через PowerShell или cmd:

# Выполните этот скрипт от имени Администратора, чтобы убить зависшие процессы FlexNet Write-Host "Убиваем процессы-зомби старого сервера..." -ForegroundColor Yellow try { Stop-Process -Name "ugslmd" -Force -ErrorAction SilentlyContinue Stop-Process -Name "lmgrd" -Force -ErrorAction SilentlyContinue Write-Host "Процессы успешно завершены." -ForegroundColor Green } catch { Write-Host "Процессы не найдены или уже завершены." -ForegroundColor DarkGray } # Отключение старой службы Set-Service -Name "Siemens PLM License Server" -StartupType Disabled -ErrorAction SilentlyContinue Stop-Service -Name "Siemens PLM License Server" -Force -ErrorAction SilentlyContinue
:: Выполните эти команды в cmd от имени Администратора taskkill /F /IM ugslmd.exe /T taskkill /F /IM lmgrd.exe /T :: Отключение службы через sc sc config "Siemens PLM License Server" start= disabled sc stop "Siemens PLM License Server"

После этого удалите папку старого сервера — обычно C:\Program Files\Siemens\PLMLicenseServer, — чтобы он случайно не запустился снова.


Этап 2. Антивирусные исключения

Самая частая причина отказов на этапе инициализации сервера. Корпоративные антивирусы, особенно Kaspersky Endpoint Security, крайне агрессивно реагируют на кряки.

Ломается это двумя способами. Во-первых, при распаковке SolidSQUAD_License_Servers.zip антивирус молча удаляет msys-2.0.dll или сами демоны lmgrd.exe и ugslmd.exe. Во-вторых, даже если файлы добавлены в локальные исключения, сетевой экран антивируса блокирует входящие соединения на портах 27800 и 28000. NX выдаёт ошибку [-1], хотя в логах сервера написано Started ugslmd.

Настройка Kaspersky KES

Просто добавить папку в «Исключения» недостаточно — нужно настроить доверенные программы (Trusted Applications).

Откройте настройки Kaspersky → Общие параметры → Угрозы и исключения (Threats and Exclusions), перейдите в раздел «Доверенные программы» и добавьте туда три пути:

  • C:\SolidSQUAD_License_Servers\Vendors\SiemensPLM\lmgrd.exe
  • C:\SolidSQUAD_License_Servers\Vendors\SiemensPLM\ugslmd.exe
  • C:\Program Files\Siemens\NX1899\NXBIN\ugraf.exe — сам процесс NX

Для каждого файла включите три флажка: «Не проверять открываемые файлы», «Не контролировать активность программы» и — это самое важное — «Не проверять сетевой трафик». Без последнего пункта вся настройка бесполезна.

Если антивирус уже успел удалить файлы, приостановите защиту, заново распакуйте папку Vendors из архива с кряком в C:\SolidSQUAD_License_Servers\, и только потом включайте антивирус.


Этап 3. Системные переменные среды

Чтобы NX знал, куда отправлять запрос на лицензию, ОС использует переменные среды. Разные версии используют разные имена: NX 1899 и новее читает SPLM_LICENSE_SERVER, NX 10 и старее — UGS_LICENSE_SERVER.

Чтобы обе программы работали с одного нового универсального сервера, нужно направить их на правильные порты: 27800 для новых, 28000 для старых.

Автоматизировать это можно следующим скриптом:

# Проверка прав администратора if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "ОШИБКА: Запустите PowerShell от имени Администратора!" -ForegroundColor Red Exit } Clear-Host Write-Host "=== Настройка системных переменных для NX 10 и NX 1899 ===" -ForegroundColor Cyan # Универсальное значение для современных версий NX $modernServerValue = "27800@localhost;28000@localhost;C:\ProgramData\Siemens\vistagy_SSQ.dat" Write-Host "[1/2] Обновление SPLM_LICENSE_SERVER (Для новых версий)..." -ForegroundColor Yellow [Environment]::SetEnvironmentVariable("SPLM_LICENSE_SERVER", $modernServerValue, "Machine") Write-Host " [+] Успешно!" -ForegroundColor Green # Значение для старых (Legacy) версий NX Write-Host "`n[2/2] Обновление UGS_LICENSE_SERVER (Для NX 10 и старше)..." -ForegroundColor Yellow [Environment]::SetEnvironmentVariable("UGS_LICENSE_SERVER", "28000@localhost", "Machine") Write-Host " [+] Успешно!" -ForegroundColor Green Write-Host "`n=======================================================" -ForegroundColor Cyan Write-Host "ГОТОВО! Переменные обновлены." -ForegroundColor Green Write-Host "ВНИМАНИЕ: Обязательно перезагрузите компьютер для применения изменений!" -ForegroundColor Red Write-Host "=======================================================" -ForegroundColor Cyan

После выполнения нужна перезагрузка.


Этап 4. Патч клиентской части и интеграция в реестр

Даже если сервер лицензий настроен идеально и служба SSQ FLEXLM Service находится в состоянии Running, NX всё равно выдаст ошибку [-1], пока её внутренние механизмы защиты не пропатчены — программа будет искать криптографические ключи официальной лицензии Siemens, игнорируя локальный сервер.

Интеграция SolidSQUADLoaderEnabler

В директории с кряком лежит файл SolidSQUADLoaderEnabler.reg. Запустите его от имени администратора и согласитесь на внесение изменений. Файл модифицирует раздел реестра Session Manager так, чтобы Windows игнорировала определённые проверки подлинности библиотек (ExcludeFromKnownDlls). Без этого шага программа работать не будет.

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager] "ExcludeFromKnownDlls"=hex(7):6e,00,65,00,74,00,61,00,70,00,69,00,33,00,32,00,\ 2e,00,64,00,6c,00,6c,00,00,00,69,00,70,00,68,00,6c,00,70,00,61,00,70,00,69,\ 00,2e,00,64,00,6c,00,6c,00,00,00,76,00,65,00,72,00,73,00,69,00,6f,00,6e,00,\ 2e,00,64,00,6c,00,6c,00,00,00,00,00

Замена файлов клиента

Модифицированные библиотеки (libugjs.dll и другие компоненты архитектуры NX) нужно скопировать вручную в корневую папку установленной программы.

Откройте папку загруженного кряка, найдите внутри директорию Client — там лежат подпапки, соответствующие компонентам Siemens (NX1899, NXBIN, UGII и т.д.). Скопируйте всё содержимое Client в корень установки NX, по умолчанию это C:\Program Files\Siemens\NX1899. На запрос Windows подтвердите слияние папок и замену файлов.

Состояние службы START_PENDING

При выполнении install_or_update.bat в консоли иногда мелькает строка Состояние: 2 START_PENDING. Это нормально для серверов FlexNet: батник запрашивает статус службы в ту же миллисекунду, когда даёт команду на запуск. Демону ugslmd.exe нужно от трёх до пяти секунд, чтобы прочитать объёмный файл лицензии (тысячи INCREMENT-инкрементов), открыть порты и перейти в состояние RUNNING.

Если же служба зависла в START_PENDING навсегда и не переходит в RUNNING даже через минуту, значит, отсутствует файл лицензии. Проверьте, что в C:\SolidSQUAD_License_Servers\Vendors\SiemensPLM\Licenses физически лежит файл .dat или .lic.


Диагностические скрипты

Сканер лицензий NX (только чтение)

Безопасно сканирует систему на наличие конфликтующих служб, неправильных переменных и путей. Ничего не меняет.

Clear-Host Write-Host "=== SIEMENS NX LICENSE SCANNER ===" -ForegroundColor Cyan Write-Host "Scanning system for NX licenses and servers...`n" -ForegroundColor DarkGray # 1. Check Variables Write-Host "1. ENVIRONMENT VARIABLES:" -ForegroundColor Yellow $vars = @("SPLM_LICENSE_SERVER", "UGS_LICENSE_SERVER") foreach ($v in $vars) { $sys = [Environment]::GetEnvironmentVariable($v, "Machine") $usr = [Environment]::GetEnvironmentVariable($v, "User") if ($sys) { Write-Host " [System] $v = $sys" -ForegroundColor Green } if ($usr) { Write-Host " [User] $v = $usr" -ForegroundColor Cyan } if (!$sys -and !$usr) { Write-Host " [-] $v is NOT SET" -ForegroundColor DarkGray } } # 2. Check Services Write-Host "`n2. LICENSE SERVICES (Running or Stopped):" -ForegroundColor Yellow $services = Get-Service | Where-Object { $_.DisplayName -match "Siemens|SolidSQUAD|FLEXlm|PLM" -or $_.Name -match "SSQ|splm|ugs" } if ($services) { foreach ($s in $services) { $color = if ($s.Status -eq 'Running') { "Green" } else { "Red" } Write-Host " [$($s.Status)] $($s.DisplayName) (Name: $($s.Name))" -ForegroundColor $color } } else { Write-Host " [-] No Siemens/SSQ license services found." -ForegroundColor DarkGray } # 3. Check Folders Write-Host "`n3. COMMON LICENSE FOLDERS:" -ForegroundColor Yellow $folders = @("C:\SolidSQUAD_License_Servers", "C:\Program Files\Siemens\PLMLicenseServer") foreach ($f in $folders) { if (Test-Path $f) { Write-Host " [+] Found folder: $f" -ForegroundColor Green } else { Write-Host " [-] Not found: $f" -ForegroundColor DarkGray } } Write-Host "`n=== SCAN COMPLETE ===" -ForegroundColor Cyan

Автоматический ремонтный скрипт (NX Error Fix)

Объединяет все шаги: прописывает системную переменную, находит и запускает SSQ FLEXLM Service, применяет файл реестра (если находит его в Загрузках) и добавляет базовые исключения для встроенного Защитника Windows.

Скрипт намеренно написан полностью на английском — это позволяет избежать ошибок парсера PowerShell TerminatorExpectedAtEndOfString, которые вылезают при сохранении русских символов в неверной кодировке (ANSI вместо UTF-8) через стандартный Блокнот.

# Admin check if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "ERROR: Please run PowerShell as Administrator!" -ForegroundColor Red Exit } Clear-Host Write-Host "=== NX License Fix ===" -ForegroundColor Cyan # STEP 1 Write-Host "[1/4] Setting SPLM_LICENSE_SERVER variable..." -ForegroundColor Yellow $varName = "SPLM_LICENSE_SERVER" $varValue = "27800@localhost;28000@localhost;C:\ProgramData\Siemens\vistagy_SSQ.dat" try { [Environment]::SetEnvironmentVariable($varName, $varValue, "Machine") Write-Host " [+] Variable set successfully!" -ForegroundColor Green } catch { Write-Host " [-] Error setting variable." -ForegroundColor Red } # STEP 2 Write-Host "`n[2/4] Checking license server service..." -ForegroundColor Yellow $service = Get-Service | Where-Object { $_.DisplayName -match "SSQ" -or $_.Name -match "SSQ" -or $_.DisplayName -match "SolidSQUAD" } if ($service) { Write-Host " [+] Service found: $($service.Name)" -ForegroundColor Green if ($service.Status -ne 'Running') { Write-Host " [!] Service stopped. Starting..." -ForegroundColor DarkYellow try { Start-Service -Name $service.Name -ErrorAction Stop; Write-Host " [+] Service started!" -ForegroundColor Green } catch { Write-Host " [-] Error starting service." -ForegroundColor Red } } else { Write-Host " [+] Service is already running." -ForegroundColor Green } } else { Write-Host " [-] WARNING: SSQ Service NOT FOUND! Please reinstall the server." -ForegroundColor Red } # STEP 3 Write-Host "`n[3/4] Looking for registry file..." -ForegroundColor Yellow $regFile = Get-ChildItem -Path "$env:USERPROFILE\Desktop", "$env:USERPROFILE\Downloads" -Recurse -Filter "SolidSQUADLoaderEnabler.reg" -ErrorAction SilentlyContinue | Select-Object -First 1 if ($regFile) { Write-Host " [+] Found: $($regFile.FullName). Importing..." -ForegroundColor Green Start-Process -FilePath "reg.exe" -ArgumentList "import `"$($regFile.FullName)`"" -Wait -NoNewWindow } else { Write-Host " [-] Registry file not found. Skipping." -ForegroundColor DarkGray } # STEP 4 Write-Host "`n[4/4] Setting up Windows Defender exclusions..." -ForegroundColor Yellow $pathsToExclude = @("C:\SolidSQUAD_License_Servers", "C:\Program Files\Siemens") foreach ($path in $pathsToExclude) { if (Test-Path $path) { try { Add-MpPreference -ExclusionPath $path -ErrorAction Stop; Write-Host " [+] Excluded $path" -ForegroundColor Green } catch { Write-Host " [-] Failed to exclude $path" -ForegroundColor DarkGray } } } Write-Host "`n=======================================================" -ForegroundColor Cyan Write-Host "DONE! PLEASE RESTART YOUR COMPUTER NOW!" -ForegroundColor Red Write-Host "=======================================================" -ForegroundColor Cyan

Запуск неподписанного скрипта

По умолчанию PowerShell блокирует скачанные скрипты политикой Restricted. Чтобы временно её обойти, откройте PowerShell от имени администратора, выполните Set-ExecutionPolicy Bypass -Scope Process -Force и запустите скрипт командой .\NX_Error_Fix.ps1.

Обновлено