用 hosts + 软件限制策略,给 WeGame 和 LOL 上锁
" alt="封面:用 hosts + 软件限制策略给 WeGame 和 LOL 上把锁" width="860">
不装任何第三方管控软件,用 Windows 自带的两样东西解决问题:hosts 文件掐断游戏的下载与登录通道,本地安全策略的证书规则拦住已装客户端的启动,再配一份自动备份和一键还原。整套东西跑完没有任何常驻进程。
先说清楚边界:这套办法防的不是懂技术的人,是"顺手点开游戏"这个动作。有本机管理员权限、愿意动手的人,任何时候都能把它拆掉。想明白了这点,后面的取舍才好判断。
一、现成的管控软件差在哪
- 第三方管控工具:能限时、界面好看,代价是要常驻一个进程,占资源不说,进程本身就能被结束掉。更麻烦的是你不清楚它在后台做了什么。
- 路由器 / DNS 屏蔽:全屋生效,听着很美。但它只挡网络,客户端已经装好照样打得开;换个手机热点就全废。
- hosts + 系统策略:零常驻、零成本、系统原生、随时可回滚。缺点是得有管理员权限配一次,而且对本机另一个管理员账号完全无效。
所以最实际的一句话是:把使用者降成标准账户,管理员密码自己拿住。
二、三层拦截怎么配合
网络层挡下载和登录,执行层挡已装程序的启动,运维层保证改坏了能退回来。这三层是纵深关系,缺一层都不完整。
只做 hosts,硬盘上躺着的客户端照开不误,进去就是"网络异常"——LOL 这种强联网游戏等于废了,但界面还是能点开。只做证书规则更不行,对方随时能重新下载一个安装包。两层一起上才谈得上管控。
" alt="三层拦截架构图" width="860">
三、第一层:hosts 域名黑洞
原理
Windows 解析域名的顺序是 hosts → DNS 缓存 → DNS 服务器。hosts 里一旦命中,就不会再往下问。
指向 0.0.0.0 而不是随便一个 IP,是因为这是个无效地址,客户端会立刻连接失败,而不是傻等超时。游戏的表现就是"网络异常",不是卡半天。

改完记得 ipconfig /flushdns,否则系统还在用旧记录。hosts 文件没有扩展名,路径是 C:\Windows\System32\drivers\etc\hosts。浏览器虽然有自己的 DNS 缓存,但游戏客户端走系统解析,不用管它。
脚本
一个文件搞定装、卸、切模式、查状态,不需要第二个卸载脚本。存成 .bat 双击就行,脚本会自己申请管理员权限。
@echo off
chcp 936 >nul 2>&1
title BlockLOL + WeGame Blocker [ 默认 /full /off /status ]
rem 直接运行 精简模式:屏蔽 20 个游戏域名,不影响 QQ/微信更新
rem xxx.bat /full 全量模式:追加 19 个腾讯公共 CDN,会连带影响腾讯系更新
rem xxx.bat /off 卸载:清 hosts 条目 + 清防火墙 BlockLOL 规则
rem xxx.bat /status 查状态,不需要管理员
set "MODE=install"
if /i "%~1"=="/full" set "MODE=installfull"
if /i "%~1"=="/off" set "MODE=remove"
if /i "%~1"=="/remove" set "MODE=remove"
if /i "%~1"=="/status" set "MODE=status"
if /i not "%MODE%"=="status" (
net session >nul 2>&1
if errorlevel 1 fltmc >nul 2>&1
if errorlevel 1 goto :elevate
)
goto :ready
:elevate
echo [提示] 正在申请管理员权限...
if "%~1"=="" (
powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
) else (
powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -ArgumentList '%~1' -Verb RunAs"
)
exit /b
:ready
set "PS1=%TEMP%\blocklol_%RANDOM%.ps1"
> "%PS1%" echo $ErrorActionPreference = 'Stop'
>> "%PS1%" echo $mode = '%MODE%'
>> "%PS1%" echo $hosts = Join-Path $env:SystemRoot 'System32\drivers\etc\hosts'
>> "%PS1%" echo $enc = New-Object System.Text.UTF8Encoding $false
>> "%PS1%" echo $utf8s = New-Object System.Text.UTF8Encoding($false, $true)
>> "%PS1%" echo $stamp = Get-Date -Format yyyyMMdd_HHmmss
>> "%PS1%" echo $marker = 'BlockLOL\+WeGame'
>> "%PS1%" echo $bak = "$($hosts).bak_$stamp"
>> "%PS1%" echo $lines = @(
call :emit "h|--- WeGame Platform ---"
call :emit "g|wegame.com"
call :emit "g|wegame.com.cn"
call :emit "g|www.wegame.com"
call :emit "g|www.wegame.com.cn"
call :emit "g|wegame.qq.com"
call :emit "g|wegame.gtimg.com"
call :emit "g|wegaming.qq.com"
call :emit "g|cdn.wegame.com.cn"
call :emit "g|cdn.web.wegame.com"
call :emit "g|static.wegame.com.cn"
call :emit "g|login.wegame.com.cn"
call :emit "g|dir-update.wegame.com.cn"
call :emit "g|update.wegame.com"
call :emit "g|developer.wegame.com"
call :emit "h|--- TGP Legacy ---"
call :emit "g|sh-cdn.tgpcdn.qq.com"
call :emit "g|sz-cdn.tgpcdn.qq.com"
call :emit "g|tgp.qq.com"
call :emit "g|tgpcdn.qq.com"
call :emit "h|--- League of Legends ---"
call :emit "g|lol.qq.com"
call :emit "g|lolclient.qq.com"
call :emit "hc|--- Tencent Download CDN (optional) ---"
call :emit "c|dd.qq.com"
call :emit "c|dl.tcdntip.com"
call :emit "c|dl.txcdns.com"
call :emit "c|dldir1.qq.com"
call :emit "c|dldir2.qq.com"
call :emit "c|dldir3.qq.com"
call :emit "c|dlglobal.qq.com"
call :emit "c|dlied.qq.com"
call :emit "c|dlied1.qq.com"
call :emit "c|dlied5.qq.com"
call :emit "c|dlied5v6.qq.com"
call :emit "c|dlied6.qq.com"
call :emit "c|dlswf.qq.com"
call :emit "c|down.qq.com"
call :emit "c|down-update.qq.com"
call :emit "c|gamedl.qq.com"
call :emit "c|imtt.dd.qq.com"
call :emit "c|update1.dlied.qq.com"
call :emit "c|wgdl.qq.com"
>> "%PS1%" echo )
>> "%PS1%" echo $clean = @{}
>> "%PS1%" echo $cdnSet = @{}
>> "%PS1%" echo foreach ($item in $lines) {
>> "%PS1%" echo if ($item.StartsWith('h^|')) { continue }
>> "%PS1%" echo $p = $item.Split('^|')
>> "%PS1%" echo $clean[$p[1]] = $true
>> "%PS1%" echo if ($p[0] -eq 'c') { $cdnSet[$p[1]] = $true }
>> "%PS1%" echo }
>> "%PS1%" echo function Read-HostsLines {
>> "%PS1%" echo param($path)
>> "%PS1%" echo $bytes = [System.IO.File]::ReadAllBytes($path)
>> "%PS1%" echo try { $text = $utf8s.GetString($bytes) } catch { $text = [System.Text.Encoding]::Default.GetString($bytes) }
>> "%PS1%" echo $tmp = New-Object System.Collections.ArrayList
>> "%PS1%" echo foreach ($l in ($text -split "`r?`n")) { $null = $tmp.Add($l) }
>> "%PS1%" echo while ($tmp.Count -gt 0 -and $tmp[$tmp.Count - 1] -eq '') { $tmp.RemoveAt($tmp.Count - 1) }
>> "%PS1%" echo return [string[]]$tmp
>> "%PS1%" echo }
>> "%PS1%" echo if (-not (Test-Path $hosts)) { New-Item -Path $hosts -ItemType File -Force ^| Out-Null }
>> "%PS1%" echo $raw = Read-HostsLines $hosts
>> "%PS1%" echo if ($mode -eq 'status') {
>> "%PS1%" echo $cnt = 0
>> "%PS1%" echo $cdn = 0
>> "%PS1%" echo foreach ($line in $raw) {
>> "%PS1%" echo $m = [regex]::Match($line, '^\s*(?:0\.0\.0\.0|::1|::)\s+(\S+)')
>> "%PS1%" echo if ($m.Success -and $clean.ContainsKey($m.Groups[1].Value)) {
>> "%PS1%" echo $cnt++
>> "%PS1%" echo if ($cdnSet.ContainsKey($m.Groups[1].Value)) { $cdn++ }
>> "%PS1%" echo }
>> "%PS1%" echo }
>> "%PS1%" echo Write-Host '=== BlockLOL+WeGame 当前状态 ===' -ForegroundColor Cyan
>> "%PS1%" echo Write-Host ('hosts 屏蔽条目: ' + $cnt + ' 条')
>> "%PS1%" echo if ($cdn -gt 0) { Write-Host ('腾讯公共 CDN: ' + $cdn + ' 条 —— 当前为全量模式') -ForegroundColor Yellow } else { Write-Host ('腾讯公共 CDN: 0 条 —— 当前为精简模式') -ForegroundColor Green }
>> "%PS1%" echo $fw = @(Get-NetFirewallRule -EA SilentlyContinue ^| Where-Object { $_.DisplayName -like 'BlockLOL*' })
>> "%PS1%" echo Write-Host ('防火墙 BlockLOL 规则: ' + $fw.Count + ' 条')
>> "%PS1%" echo exit 0
>> "%PS1%" echo }
>> "%PS1%" echo $hit = @($raw ^| Where-Object { $_ -match $marker }).Count
>> "%PS1%" echo if ($hit % 2 -ne 0) {
>> "%PS1%" echo Write-Host ('=== 错误:hosts 标记不成对,找到 ' + $hit + ' 个 ===') -ForegroundColor Red
>> "%PS1%" echo Write-Host '为避免误删,未做任何修改。请手动检查 hosts 里 BlockLOL+WeGame 的 START/END 标记。' -ForegroundColor Yellow
>> "%PS1%" echo exit 1
>> "%PS1%" echo }
>> "%PS1%" echo $ro = (Get-Item $hosts).IsReadOnly
>> "%PS1%" echo Copy-Item -Path $hosts -Destination $bak -Force
>> "%PS1%" echo Set-ItemProperty -Path $hosts -Name IsReadOnly -Value $false -ErrorAction SilentlyContinue
>> "%PS1%" echo $out = New-Object System.Collections.ArrayList
>> "%PS1%" echo $inside = $false
>> "%PS1%" echo $removed = 0
>> "%PS1%" echo foreach ($line in $raw) {
>> "%PS1%" echo if ($line -match $marker) { $inside = -not $inside; $removed++; continue }
>> "%PS1%" echo if ($inside) { $removed++; continue }
>> "%PS1%" echo $m = [regex]::Match($line, '^\s*(?:0\.0\.0\.0|::1|::)\s+(\S+)')
>> "%PS1%" echo if ($m.Success -and $clean.ContainsKey($m.Groups[1].Value)) { $removed++; continue }
>> "%PS1%" echo $null = $out.Add($line)
>> "%PS1%" echo }
>> "%PS1%" echo if ($mode -eq 'install' -or $mode -eq 'installfull') {
>> "%PS1%" echo $null = $out.Add('# === BlockLOL+WeGame START ===')
>> "%PS1%" echo $count = 0
>> "%PS1%" echo foreach ($item in $lines) {
>> "%PS1%" echo if ($item.StartsWith('h^|')) {
>> "%PS1%" echo $rest = $item.Substring(2)
>> "%PS1%" echo if ($rest.StartsWith('c^|')) {
>> "%PS1%" echo if ($mode -eq 'installfull') { $null = $out.Add(''); $null = $out.Add($rest.Substring(2)) }
>> "%PS1%" echo } else {
>> "%PS1%" echo $null = $out.Add(''); $null = $out.Add($rest)
>> "%PS1%" echo }
>> "%PS1%" echo } else {
>> "%PS1%" echo $p = $item.Split('^|')
>> "%PS1%" echo if ($p[0] -eq 'c' -and $mode -ne 'installfull') { continue }
>> "%PS1%" echo $null = $out.Add('0.0.0.0 ' + $p[1])
>> "%PS1%" echo $count++
>> "%PS1%" echo }
>> "%PS1%" echo }
>> "%PS1%" echo $null = $out.Add('')
>> "%PS1%" echo $null = $out.Add('# === BlockLOL+WeGame END ===')
>> "%PS1%" echo }
>> "%PS1%" echo [System.IO.File]::WriteAllLines($hosts, [string[]]$out, $enc)
>> "%PS1%" echo if ($ro) { Set-ItemProperty -Path $hosts -Name IsReadOnly -Value $true }
>> "%PS1%" echo if ($mode -eq 'install') { Write-Host ('OK - 精简模式,屏蔽 ' + $count + ' 个游戏域名;腾讯公共 CDN 未受影响') -ForegroundColor Green }
>> "%PS1%" echo if ($mode -eq 'installfull') { Write-Host ('OK - 全量模式,屏蔽 ' + $count + ' 个域名;QQ/微信/腾讯会议等更新会一并失效') -ForegroundColor Yellow }
>> "%PS1%" echo if ($mode -eq 'remove') {
>> "%PS1%" echo Write-Host ('OK - 已清除 ' + $removed + ' 行屏蔽条目') -ForegroundColor Green
>> "%PS1%" echo $rules = @(Get-NetFirewallRule -EA SilentlyContinue ^| Where-Object { $_.DisplayName -like 'BlockLOL*' })
>> "%PS1%" echo if ($rules.Count -gt 0) {
>> "%PS1%" echo $rules ^| Remove-NetFirewallRule
>> "%PS1%" echo Write-Host ('firewall: removed ' + $rules.Count + ' rule(s)') -ForegroundColor Green
>> "%PS1%" echo } else { Write-Host 'firewall: no BlockLOL rule found' -ForegroundColor Gray }
>> "%PS1%" echo }
>> "%PS1%" echo Write-Host ('Backup: ' + $bak) -ForegroundColor Gray
goto :run
:emit
>> "%PS1%" echo '%~1'
goto :eof
:run
echo.
echo 正在处理 hosts 文件...
powershell -NoProfile -ExecutionPolicy Bypass -File "%PS1%"
set "RC=%errorlevel%"
del "%PS1%" >nul 2>&1
if /i "%MODE%"=="status" goto :done
echo.
echo 正在刷新 DNS 缓存...
ipconfig /flushdns
:done
set "DONE=完成,游戏域名已屏蔽"
if "%MODE%"=="installfull" set "DONE=完成(全量模式,腾讯系软件更新会受影响)"
if "%MODE%"=="remove" set "DONE=已解除屏蔽,游戏可正常联网"
if "%MODE%"=="status" set "DONE=状态查询完成"
echo.
if "%RC%"=="0" (echo ===== %DONE% =====) else (echo ===== 未做修改或执行失败,请看上方提示 =====)
echo.
pause
exit /b四种用法
| 命令 | 作用 | 屏蔽条数 |
|---|---|---|
BlockLOL_WeGame.bat | 精简安装,默认推荐 | 20,不影响 QQ 微信 |
...bat /full | 全量安装 | 39,腾讯系更新一并失效 |
...bat /off | 卸载 | 清 hosts + 清 BlockLOL* 防火墙规则 |
...bat /status | 查状态,免管理员 | — |
三种模式之间可以直接切换,从 /full 切回默认会自动清掉 CDN 条目,不用先卸载再装。
脚本里几个值得交代的实现
自己写 hosts 脚本容易踩的坑,这里都处理了,逐条说一下为什么这么写。
域名按伤害范围分档。 g| 前缀是游戏专属域名,c| 前缀是腾讯公共下载 CDN,只有 /full 才写入。但清理集合始终是全集,这样从全量切回精简时 CDN 条目能被完整清干净,不留残骸。
幂等。 安装前先把旧的标记区块和所有 0.0.0.0 <域名> 条目删掉,再重新写入。跑十次和跑一次结果一模一样。
备份路径必须写成 $($hosts)。 这是最容易踩的 PowerShell 陷阱:双引号里直接写 "$hosts.bak_$stamp",那个 . 会被当成成员访问符,$hosts 是字符串没有 bak_ 属性,插值结果为空——备份路径只剩一个时间戳,文件写到了当前工作目录而不是 hosts 旁边。真出事的时候你才发现"备份"根本不在预期位置。
空行写在 START 标记之后。 反过来的话空行落在标记块外面,过滤时不会被跳过,每跑一次就多留一份。
标记成对校验。 数 BlockLOL+WeGame 出现几次,不是偶数就拒绝执行并返回退出码 1。防止 START/END 被手动改坏之后误删掉半个 hosts。
编码回退。 先按严格 UTF-8 读,抛异常就回退系统默认编码(GBK),hosts 里有中文注释也不会写坏。写回统一 UTF-8 无 BOM,带 BOM 的 hosts 在部分场景会解析异常。
清理正则兼容 IPv6 形式。 统一按 0.0.0.0|::1|:: 匹配,能顺手清掉别的工具写的 ::1 <域名>。否则新增的 0.0.0.0 未必抢得到解析优先级,等于白装。
只删自己的东西。 删除时严格匹配域名集合,你 hosts 里其他自定义条目(公司内网映射、打印机地址)不会被误伤。
保留只读属性。 hosts 常被设成只读防篡改,脚本改完会自动恢复原状。
提权双重判断。 先 net session,失败再用 fltmc 兜底,避免在个别环境误判成已提权。/status 只读不写,标准账户也能查。
四、域名清单
一共 39 个,按伤害范围分四组:
| 分组 | 数量 | 域名 |
|---|---|---|
| WeGame 平台(默认装) | 14 | wegame.com wegame.com.cn www.wegame.com www.wegame.com.cn wegame.qq.com wegame.gtimg.com wegaming.qq.com cdn.wegame.com.cn cdn.web.wegame.com static.wegame.com.cn login.wegame.com.cn dir-update.wegame.com.cn update.wegame.com developer.wegame.com |
| TGP 遗留(默认装) | 4 | tgp.qq.com tgpcdn.qq.com sh-cdn.tgpcdn.qq.com sz-cdn.tgpcdn.qq.com |
| 英雄联盟(默认装) | 2 | lol.qq.com lolclient.qq.com |
腾讯下载 CDN(仅 /full) | 19 | down.qq.com down-update.qq.com dd.qq.com imtt.dd.qq.com gamedl.qq.com wgdl.qq.com dldir1.qq.com dldir2.qq.com dldir3.qq.com dlied.qq.com dlied1.qq.com dlied5.qq.com dlied5v6.qq.com dlied6.qq.com dlswf.qq.com dlglobal.qq.com update1.dlied.qq.com dl.txcdns.com dl.tcdntip.com |
第四组默认不碰。那 19 个是腾讯全家桶共用的下载通道,屏蔽之后 QQ、微信、腾讯会议、腾讯视频的在线升级会一起失效。如果这台机器只用来打游戏,那 /full 无所谓;日常还得用这些软件,就用默认的 20 个,靠下一节的证书规则去堵启动。
五、第二层:用证书规则禁掉 exe 启动
hosts 是网络层的拦截。已经躺在硬盘上的客户端,理论上还能双击启动,只是进去之后登录失败、更新失败。对 LOL 这种强联网游戏,体验上已经废了;但要对付"我就想点开看看",直接拦在启动前更干净。
配置步骤
Win + R→secpol.msc→ 回车,打开本地安全策略。- 左侧展开软件限制策略 → 右键其他规则 → 新建证书规则…。如果"软件限制策略"下面是空的,先右键它 → 创建软件限制策略。
- 点浏览,找到 WeGame 或 LOL 安装目录下的主程序(比如
WeGame.exe、Client.exe),选中后系统会自动读取它签名用的那张证书。 - 安全级别选不允许,确定。
- 注销重新登录或重启,规则才会生效。
要禁几个 exe 就重复几次。规则建完在"其他规则"里会列成一排,随时可以删,或者改成"不受限的"。
三句实话
- SRP 已经被微软标记弃用。 从 Windows 10 1803 / Server 2019 起官方不再推荐新部署,建议改走 AppLocker 或 App Control for Business。
- 但它有个别的方案没有的好处:SRP 规则作用于所有用户,包括管理员,AppLocker 则可以按用户/组区分。家庭管控场景下,"管理员也打不开"反而省事。
- 证书规则可能误杀。 SRP 的证书规则匹配的是"签署这个文件的那张具体证书",不是"发布者"这一个维度。腾讯旗下多个产品可能共用签名证书,建完之后务必把自己常用的腾讯系软件全点一遍。想精确到某个产品名、文件名或版本,得用 AppLocker 的发布者规则。
六、备份与回滚
脚本已经自动备份了,你需要知道的是怎么救场:
# 查看备份(hosts 同一目录)
Get-ChildItem "$env:SystemRoot\System32\drivers\etc\hosts.bak_*"
# 手动还原,时间戳换成实际的
Copy-Item "$env:SystemRoot\System32\drivers\etc\hosts.bak_20260903_143000" `
"$env:SystemRoot\System32\drivers\etc\hosts" -Force
ipconfig /flushdns策略规则的还原更简单:回到 secpol.msc 把规则删掉,注销重登。
七、几个容易卡住的地方

家庭版没有 secpol.msc。 这是最常见的卡点。本地安全策略只存在于专业版 / 企业版 / 教育版,家庭版镜像里根本没有这个组件,不是被禁用,是压根不存在。家庭版用户要么升到专业版,要么走下面第九节的替代方案。
新机器优先考虑 AppLocker。 从 Windows 10 2004 + KB5024351 及所有 Windows 11 版本起,AppLocker 策略在所有版本(含专业版)都能强制生效。它支持按发布者、产品名、文件名、版本精细匹配,还有仅审核模式——先跑一段时间看日志会不会误伤,确认没问题再切强制。长期维护的话这条路更干净。
改 hosts 被杀软拦截。 部分安全软件会保护 hosts 文件并弹窗。碰到"拒绝访问",在杀软里把这次操作放行,或临时关掉 hosts 保护。
hosts 里有中文注释。 脚本已经做了编码回退,中文注释不会乱码。但每次运行仍会自动备份,这是最后一道兜底。
八、装完怎么验证
# 最省事
BlockLOL_WeGame.bat /status
# 确认 hosts 已写入
Get-Content "$env:SystemRoot\System32\drivers\etc\hosts" | Select-String "BlockLOL"
# 确认解析被劫持,应返回 0.0.0.0 或报错
nslookup lol.qq.com
ping wegame.com
# 确认缓存已刷新
ipconfig /displaydns | Select-String "qq.com"最直接的验证方式是双击 WeGame。出不来,就成了。
九、几个更省事的替代方案
需求没那么硬的话,这几条可能更合适。
只想限制时长,不想全禁 → Microsoft 家庭安全(Family Safety)。给孩子的账户绑定 Microsoft 账号后,可以按应用/游戏设每日时长和时段,跨设备生效,带周报。家庭版 Windows 也能用,这是家庭版最推荐的路线。
专业版/企业版,想做得正规 → AppLocker。先开"仅审核"跑一周,看事件查看器里 Applications and Services Logs → Microsoft → Windows → AppLocker 的日志,确认无误伤再切强制。
想要终极防御 → App Control for Business(原 WDAC),系统级白名单。强度最高,配置成本也最高。
十、几个常问的问题
屏蔽之后游戏一直转圈不报错,正常吗?
正常。有些客户端会重试而不是立刻报错。只要 nslookup 返回 0.0.0.0,规则就生效了。
为什么 WeGame 还能打开,只是登不进去?
这正是预期效果——hosts 只管网络。要连启动一起禁,得配第五节的证书规则,或者改用 AppLocker。
会影响网速和其他网站吗?
不会。hosts 只匹配清单里的精确域名,清单外的解析完全不受影响。整机性能开销为零,没有常驻进程。
默认模式够吗,要不要上 /full?
默认就够。20 个游戏域名已经把下载、更新、登录三条路全堵死了。/full 那 19 个 CDN 边际收益很小,代价却是 QQ/微信更新失效——除非这台机器本来就不装任何腾讯软件,否则不推荐。
腾讯更新了新域名怎么办?
把新域名加进脚本的 call :emit "g|新域名" 列表(游戏域名用 g|,CDN 用 c|),重跑一次。游戏大版本更新后建议复查一遍。
能用防火墙规则替代 hosts 吗?
可以,/off 卸载时已经预留了清理 BlockLOL* 防火墙规则的逻辑。防火墙能按 exe 路径拦出站,更精准,但规则管理比 hosts 麻烦,适合愿意折腾的。
有管理员权限就能改回来,那这套还有意义吗?
这是整套方案的天花板,只能靠管理手段补上:给使用者标准账户、管理员密码自己保管、UAC 拉到最高、关掉其他管理员账号。技术加账户加事先说好的规则,三件事凑齐才完整。
所有操作都基于 Windows 原生功能,脚本先备份再修改。动手前建议建一次系统还原点,出问题能兜底。
觉得内容不错?我要