### [Windows超算Ansys自动激活解决方案及源代码](https://www.7b3.cn/article/2407) **Published:** 2026-03-22T05:50:31 **Author:** 泵小丫 **Excerpt:** 友情提示:文章底部附完整代码下载!测试环境为Windows10LTSC+Ansys2024R1。如果你要问为啥… 友情提示:文章底部附完整代码下载!测试环境为Windows10LTSC+Ansys2024R1。如果你要问为啥我没装最新版Ansys2026,呵,100G上传到超算平台到猴年马月了。理论上适用于所有需要许可程序的Ansys版本! 重点关注:如果你的Ansys许可程序路径和Ansys许可文件路径与我的代码不符,请自己修改,如果不想修改代码,那么安装Ansys许可程序时安装路径保持默认,也即C:\\Program Files\\ANSYS Inc,同时把license.txt许可文件放在C:\\Program Files\\ANSYS Inc\\Shared Files\\licensing文件夹下!!! ## 问题概述 超算大家可能用的多的是Linux系统的,因为好多CFD商软都有Linux版本,且Linux对服务商来说管理更方便,比如我们熟知的Ansys和StarCCM+都有官方发行的Linux版本,且相同配置下,这些软件在Linux求解速度要比Windows快一些,所以如果你是用CFX或者Fluent等流体求解器,用Linux的超算即可。 但是并不是所有软件都有Linux版,比如我们常用的CFturbo和Simerics MP+,当然还有其他很多很多软件,只有Windows版本。总不能我们在Linux中再虚拟个Win系统来跑这些软件吧,那属实是俄罗斯套娃行为了,因为每一次虚拟都会损失一部分性能。所以最好的方式还是直接用Windows版本的超算,我们将在下一篇文章为大家推荐我们使用过的还不错的超算服务商。今天主要的目的是来讲讲Windows超算中软件安装及激活的问题。 超算最大的优势是随用随开,按需计费,每创建一个虚拟机,都是一台新电脑,如果服务商没有内置安装程序,那么每次我们创建服务器后需要自己手动上传安装包,执行软件安装流程,才能使用。当然部分服务商也可以帮你预装软件,但是这可能涉及到平台版权问题,不见得那么顺利,尤其是一些小众软件,用的人很少,就别指望平台能内置了,所以还得自己来。 针对这个问题,部分超算服务商也提供了解决方案,你可以先开一台服务器,然后装好你需要的软件,完成这些工作后,把这台服务器创建成你自己的一个固定模板(云服厂家一般叫快照或镜像),后续新开超算服务器的时候,直接使用这个模板就可以了,那么恭喜你,解决了软件需要重复安装费时费力的问题。 你以为这就万事大吉了?还没有。先说简单的CFturbo和Simerics MP+,大家安装过肯定知道,这俩只需要替换部分文件就可以正常使用,不涉及许可文件及License中代码的变更,所以你用模板创建的服务器中打开就能直接使用。但是Ansys高版本不是这样,软件许可需要用到Ansys license management center,这就引入了一个新问题,我们安装时需要先在license.txt中将MAC Address代码替换成本机实际编码,然后再安装这个license许可才能正常激活使用Ansys,你猜每次新建的服务器的MAC Address代码变不变?这个编码是根据网卡等硬件计算的,本地电脑的MAC Address编码是唯一的,除非你更换硬件,但是每开一台超算,这个编码都是改变的,所以相当于每次开一台超算,都需要重新对Ansys进行授权,相比每次都需要安装Ansys来说,重新授权无非是改个license文件,打开Ansys license management center开启许可而已,也不算太麻烦。 ## 解决方案 但是对于我这样的懒人来说,本着能少一步就少一步的原则,修改license文件这个工作我也不想自己做,那怎么办,那就电脑批处理呗,写个脚本,能够自动执行获取新MAC Address编码并修改license文件最后激活许可,部分代码如下: bat文件: ``` @echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B ) del "%temp%\getadmin.vbs" 2>nul powershell -ExecutionPolicy Bypass -NoExit -File "%~dp0ansys_update.ps1" ``` ps1文件: ``` $LicenseFile = "C:\Program Files\ANSYS Inc\Shared Files\licensing\license.txt" $LicensingDir = "C:\Program Files\ANSYS Inc\Shared Files\licensing" $Winx64Dir = "$LicensingDir\winx64" $LmgrdExe = "$Winx64Dir\lmgrd.exe" $LogFile = "$LicensingDir\logs_backup\lmgrd.log" $utf8NoBom = [System.Text.UTF8Encoding]::new($false) Write-Host "===== Ansys License Update =====" -ForegroundColor Cyan if (-not (Test-Path $LicenseFile)) { Write-Host "[ERROR] Not found: $LicenseFile" -ForegroundColor Red Read-Host "Press Enter to exit" exit 1 } Write-Host "[OK] Found license.txt" -ForegroundColor Green $adapter = Get-NetAdapter | Where-Object { $_.Status -eq "Up" -and $_.MacAddress -ne "" } | Sort-Object ifIndex | Select-Object -First 1 if (-not $adapter) { Write-Host "[ERROR] No network adapter found" -ForegroundColor Red Read-Host "Press Enter to exit" exit 1 } $NewHostID = ($adapter.MacAddress -replace "-", "").ToLower() Write-Host "[OK] New HostID: $NewHostID" -ForegroundColor Green $lines = [System.IO.File]::ReadAllLines($LicenseFile) for ($i = 0; $i -lt $lines.Count; $i++) { $trimmed = $lines[$i].Trim() if ($trimmed.StartsWith("SERVER ")) { $parts = $trimmed -split "\s+" Write-Host "[OLD] $trimmed" -ForegroundColor Yellow $parts[2] = $NewHostID $lines[$i] = [string]::Join(" ", $parts) Write-Host "[NEW] $($lines[$i])" -ForegroundColor Green break } } Copy-Item $LicenseFile "$LicenseFile.bak" -Force [System.IO.File]::WriteAllLines($LicenseFile, $lines, $utf8NoBom) Write-Host "[OK] license.txt saved (UTF-8 no BOM)" -ForegroundColor Green Write-Host "" Write-Host "Stopping old License Server..." -ForegroundColor Cyan ``` 可以看到核心操作在ps1文件中,前面几行代码是确定Ansys的安装路径以及许可文件和许可管理器的路径,方便后续的修改、替换、重启等操作,后面就是自动获取MAC Address编码等问题了。将这两个文件放在同一个文件夹下,双击bat文件就可以自动创建许可文件并激活授权了。执行界面输出内容如下: ``` Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。 ===== Ansys License Update ===== [OK] Found license.txt [OK] New HostID: 00163e555745 [OLD] SERVER localhost 00163e555745 1055 [NEW] SERVER localhost 00163e555745 1055 [OK] license.txt saved (UTF-8 no BOM) Stopping old License Server... [OK] Old processes cleared Starting License Server (lmgrd)... [OK] lmgrd launched, waiting 6 seconds... [OK] lmgrd is running [OK] ansyslmd vendor daemon is running --- Last 15 lines of log --- 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) Number of VD restarts since LS startup: 0 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) === Network Info === 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) Listening port: 50563 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) Daemon select timeout (in seconds): 1 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) === Host Info === 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) Host used in license file: cloudam 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) HostID node-locked in license file: 00163e555745 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) HostID of the License Server: "00163e555745 14cf20524153 08c020524153 006d20524153" 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) Running on Hypervisor: Unknown Hypervisor 8:14:17 (ansyslmd) (@ansyslmd-SLOG@) =============================================== 8:14:17 (ansyslmd) Ecomms: Encrypted Communication disabled 8:14:17 (ansyslmd) TCP_NODELAY NOT enabled 8:14:17 (ansyslmd) Listener Thread: running ===== Done ===== New HostID : 00163e555745 Press Enter to exit: ``` 此时Ansys的许可就已经在运行中了。 ![](https://img.7b3.cn/7b3/2026/03/20260322001712400.png) ![](https://img.7b3.cn/7b3/2026/03/20260322001732328.png) 所以理论上你把这两个文件放在超算中并做成模板,每次创建服务器后双击bat文件执行就可以自动许可授权了,相比之前的手动操作已经方便多了。 这就完了?依然不够,既然懒就一懒到底吧,能不能开机自动执行,我连点都懒得点,没问题,这个不需要写代码了,在Windows中自动运行批处理文件的方式有很多,可以修改注册表,也可以设置任务计划,我们选择最简单的任务计划。 如果不想手动设定计划任务,那么直接下滑看“代码完善部分” ### 设定任务计划(推荐) 这个功能是Windows自带的,在win中搜索“任务计划程序”,如下图所示,打开 ![](https://img.7b3.cn/7b3/2026/03/20260322002603408.png) 点击“创建基本任务” ![](https://img.7b3.cn/7b3/2026/03/20260322002741594.png) 输入任务名称,点击下一步 ![](https://img.7b3.cn/7b3/2026/03/20260322002905677.png) 触发器设定为“计算机启动时”或“当前用户登录时”,点击下一步 ![](https://img.7b3.cn/7b3/2026/03/20260322002958807.png) 要执行的任务是“启动程序”,点击下一步 ![](https://img.7b3.cn/7b3/2026/03/20260322003051786.png) 点击“浏览”找到脚本文件bat的路径,如下图所示,点击下一步 ![](https://img.7b3.cn/7b3/2026/03/20260322003206938.png) 勾选下图所示的按钮,点击下一步 ![](https://img.7b3.cn/7b3/2026/03/20260322003647793.png) 切换到触发器栏,点击新建,开始任务为登录时,所有用户,点击确定。这样触发条件就有了2个,满足任意一个就会自动执行许可激活服务。 ![](https://img.7b3.cn/7b3/2026/03/20260322003739787.png) ![](https://img.7b3.cn/7b3/2026/03/20260322003823124.png) ![](https://img.7b3.cn/7b3/2026/03/20260322003908325.png) 完成以上步骤,再给这台超算创建一个模板就可以了,后续新建的所有超算开启后都是自动授权许可,不需要再手动操作了。 ## 代码完善 看到这里想必你已经对这个东西有了一定的认识,那么作为懒人我要告诉你,上面添加自动任务这个事也是手动的,这能接受?继续改代码,因为这一步我也不想自己做哈哈。 那么只需要在ps1文件中添加如下代码即可: ``` $TaskName = "AnsysLicenseAutoStart" $BatFile = Join-Path $PSScriptRoot "ansys_update.bat" $existingTask = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue if (-not $existingTask) { Write-Host "" Write-Host "Registering startup scheduled task..." -ForegroundColor Cyan $xmlLines = @( '' '' ' ' ' Auto-start Ansys License Server on boot and logon' ' ' ' ' ' true' ' true' ' ' ' ' ' ' ' S-1-5-18' ' HighestAvailable' ' ' ' ' ' ' ' IgnoreNew' ' false' ' false' ' PT5M' ' PT1M2' ' ' ' ' ' ' ' cmd.exe' (" /c `"" + $BatFile + "`"") ' ' ' ' '' ) $taskXml = $xmlLines -join "`r`n" Register-ScheduledTask -TaskName $TaskName -Xml $taskXml -Force | Out-Null Write-Host "[OK] Task '$TaskName' registered successfully." -ForegroundColor Green Write-Host " - Trigger 1 : At system startup" -ForegroundColor White Write-Host " - Trigger 2 : At any user logon" -ForegroundColor White } else { Write-Host "" Write-Host "[INFO] Scheduled task '$TaskName' already exists, skipped." -ForegroundColor Yellow } ``` 此时当你运行一次bat文件后,许可自动授权,也不需要手动添加任务计划,一键搞定。 ## 代码下载 最终完整代码下方下载! ## 使用方法 下载安装包并解压,将2个文件放在同一个文件夹内,双击运行ansys\_update.bat文件就行了,前提是你需要先安装教程安装完成Ansys的许可程序和主程序,再唠叨一下安装路径的问题,我的代码中Ansys许可程序安装在C:\\Program Files\\ANSYS Inc路径中,license.txt许可文件需要放在C:\\Program Files\\ANSYS Inc\\Shared Files\\licensing文件下,如果你想把许可程序装在别的其他盘里边,请手动修改ansys\_update.ps1文件的前2行!!!Ansys主程序路径不受影响。。。 ``` $LicenseFile = "C:\Program Files\ANSYS Inc\Shared Files\licensing\license.txt" $LicensingDir = "C:\Program Files\ANSYS Inc\Shared Files\licensing" $Winx64Dir = "$LicensingDir\winx64" $LmgrdExe = "$Winx64Dir\lmgrd.exe" $LogFile = "$LicensingDir\logs_backup\lmgrd.log" ``` ## 模板分享 如果你以上工作也不想自己做,当然也可以,我可以提供我做好的模板,开机即用,具体联系微信@pump7b3有偿获取。不用自己上传安装包,不用安装软件,也不用搞代码了。 **Tags:** ansys授权, ansys许可, ansys超算自动许可, windows, win超算, 自动许可, 超算 **Categories:** 仿真模拟 ---