最近我在买新的生产力工具,我想全方位评测一下新机器,但是windows 11初次开机后强制要求联网,联网会自动激活windows。虽然使用oobe方法(按Shift+F10
或FN+Shfit+F10
快捷键,在弹出命令行输入oobe\bypassnro
,然后回车,自动重启,重启后,在联网界面会有“我没有Internet连接
”选项点击此选项即可跳过联网)可以跳过联网步骤,但是进入系统后依然不能联网,这样就不能愉快的体验新的机器。
在网上没有搜到任何能够联网不激活的有效方法。于是我想自己研究一下,看能不能解决这个问题。
问题总结为”如何在联网情况下,不自动激活windows”,这样就能享受七天无理由退货。
国内的电商平台都有七天无理由退货的服务,但是笔记本里windows激活后和厂家自带软件激活(即已激活/更改/卸载的机器)且没有质量问题是不支持七天无理由退货。如果不联网的情况下,验机就非常的麻烦,需要使用移动设备或者没有互联网的无线传输文件。
直接想要解决方案,点击访问禁止windows联网自动激活
在机器接入网络的时候,windows的某个程序会向微软的服务器提供bios里的密钥和机器的硬件信息、操作系统版本,进行验证。如果验证通过,则windows就处于激活状态,且这个硬件和密钥信息会保存在微软的服务器上。
在相同的windows版本情况下,激活的机器的是无法变成未激活,除非破坏windows激活验证程序。即在系统重装相同版本windows,联网后依然自动激活(只要硬件信息不变)。
而商家判断机器激活的标准是微软服务器和厂家服务器上是否有激活记录,即只要有激活记录,就算机器激活了。
在windows联网时候,windows上的某个程序会发起激活请求。假设激活服务器的域名为xxx.xxx
- 先从hosts文件中查找
xxx.xxx
的解析记录,如果找到了,则返回这个ip。如果没有找到则访问dns服务器进行域名解析。 - 如果成功解析ip,则激活程序访问这个ip,进行激活。否则激活程序停止激活。
主要的思路,联网时候阻止跟微软服务器和厂家服务器进行通信。
阻止跟微软服务器通信的方法:
- 修改windows配置(通过注册表或其他配置)不让windows进行激活验证。比如禁止windows更新,关闭软件保护服务,这些方法不保证有效。
- 破解激活程序,不让windows与微软激活服务器通信。可能的方法有使用kms进行激活。
- 不使用原装系统。先备份原装系统,然后重装的不同版本的系统,使用kms激活(可能不激活也行)。当然也可以安装Linux操作系统。
- 激活时候都是通过域名方式与微软的验证激活服务器进行连接,所以只要阻止这个域名的解析,就能阻止windows进行激活。
第一种方法,难度特别大。第二种方法可能破坏原有的操作系统,需要先备份系统。第三种操作比较麻烦,需要备份系统、安装新系统。
第四种操作比较简单,只需要阻止域名解析就行。所以我采用这个方法,下面就介绍这种方法。
阻止跟厂家服务器通信的方法:卸载厂家自带的各种软件,或者禁止厂家软件联网
获得微软激活服务域名方法:将机器接入网络(没有互联网连接),并对机器接入网络时候进行抓包,分析出dns域名解析请求里的所有域名。
这里我的老笔记本上建wifi热点,这个wifi热点连接不了互联网,在旧笔记本上进行抓包,然后新笔记本连上这个wifi。
分析后得到了下面的域名请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| _ldap._tcp.dc._msdcs.mshome.net
wpad.mshome.net
config.edge.skype.com
mshome.net
cu1prodehnswssenglogs.servicebus.windows.net
www.msftconnecttest.com
fs.microsoft.com
dns.msftncsi.com
islnhxoktsami.mshome.net
watson.events.data.microsoft.com
fd.api.iris.microsoft.com
settings-win.data.microsoft.com
slscr.update.microsoft.com
ctldl.windowsupdate.com
rls-proxy-01.chinaeast2.cloudapp.chinacloudapi.cn
self.events.data.microsoft.com
officeclient.microsoft.com
ecs.office.com
edge.microsoft.com
ipv6.msftncsi.com
mrodevicemgr.officeapps.live.com
login.live.com
client.wns.windows.com
activation-v2.sls.microsoft.com
nw-umwatson.events.data.microsoft.com
g.live.com
wdcpalt.microsoft.com
oneclient.sfx.ms
|
经过测试发现C:\Windows\System32\slui.exe
,会访问windows激活服务器activation-v2.sls.microsoft.com
为了防止windows激活,我采取宁可错杀一千,绝不放过一个,上面的域名全部禁止解析。
对上面的域名进行劫持,防止windows自动激活。
- 新电脑连接另一个电脑wifi热点上网,开热点的电脑上安装yogadns,并屏蔽这些域名。
- 新电脑dns地址设置为可以屏蔽域名的dns服务器(比如使用SimpleDnsCrypt搭建本地域名缓存服务器)
- 新电脑安装yogadns,屏蔽上面这些域名,然后设置dns地址为可以屏蔽域名的dns服务器或不可访问ip(比如127.0.0.1),做为兜底保险,防止yogadns不起作用时候,依然可以阻止windows自动激活。
- 在hosts文件里将上面的域名解析为0.0.0.0
其中第四种方法并没有进行实践,不知道是否可行。
这里介绍一下,第三种新电脑安装yogadns进行屏蔽域名方法
yogadns作用就是阻止上面的域名进行解析,它的原理是劫持系统上的域名请求,然后自己代理dns请求,忽略系统的dns服务器设置。
这里操作系统为Win11 Home China 22H
1. 卸载厂商自带的各种软件(包括隐藏成驱动的各种服务,比如联想的**System Interface Foundation Service**)和禁止驱动程序服务联网
2.下载并安装yogadns,配置为开机启动
从https://www.yogadns.com/download/YogaDNSSetup.exe进行下载
3.保存下面内容为yogadns-config.xml
文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<YogaDnsProfile file_format="1" product_id="1" product_min_version="127000">
<Settings ignore_rule_if_interface_down="1" blockTcpPort53="1" clearDnsCache="1" ttlMin="0" ttlMax="2147483647" captivePortalDetection="0" interceptOthers="0">
<DnsChecker testTarget="iana.org" testsPerTime="15" importUrls="https://yogadns.com/resolvers/resolvers.md
https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md
https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/relays.md
" />
</Settings>
<Rule name="block dns" enabled="1" dnssec_local_validation="0" dnssec_reject_unsigned="0" block_return_zero_ip="0" hostnames="_ldap._tcp.dc._msdcs.mshome.net
wpad.mshome.net
config.edge.skype.com
mshome.net
cu1prodehnswssenglogs.servicebus.windows.net
www.msftconnecttest.com
fs.microsoft.com
dns.msftncsi.com
islnhxoktsami.mshome.net
watson.events.data.microsoft.com
fd.api.iris.microsoft.com
settings-win.data.microsoft.com
slscr.update.microsoft.com
ctldl.windowsupdate.com
rls-proxy-01.chinaeast2.cloudapp.chinacloudapi.cn
self.events.data.microsoft.com
officeclient.microsoft.com
ecs.office.com
edge.microsoft.com
*.microsoft.com
*.windowsupdate.com
*.office.com
*.mshome.net
ipv6.msftncsi.com
ipv6.msftconnecttest.com
mrodevicemgr.officeapps.live.com
login.live.com
client.wns.windows.com
*.windows.com
*.live.com
*.live.net
*.msedge.net
*.windows.net
*.sfx.ms
*.msn.com
*.msn.net
*.msn.cn
*.office365.com
*.skype.com
*.msftncsi.com
*.azureedge.net
*.azurefd.net
*.msocdn.com
*.bing.net
*.bing.com
*.footprintdns.com
*.microsoft.net
*.msftconnecttest.com
cxcs.microsoft.net
g.live.com
licensing.mp.microsoft.com" action="block" action_id="0" interface_id="" interface_id_type="id" interface_name="" />
<Rule name="Default" enabled="1" dnssec_local_validation="0" dnssec_reject_unsigned="0" hostnames="*" action="process_server" action_id="1001" interface_id="" interface_id_type="id" interface_name="" />
<DnsPool id="1002" name="New Pool" type="redundancy" redundancy_test_host="iana.org" redundancy_recheck_delay="60">
<DnsServer id="1001" />
</DnsPool>
<DnsServer id="1001" name="aliyun" protocol="doh" af="2" ip="223.5.5.5" doh_host_name="dns.alidns.com" doh_path="/dns-query" doh_hashes="98E3:D5E5:36AF:2958:CD2F:7F14:F704:EF4A:276D:25E3:3CD6:5F2E:65F5:E4F2:727C:1330" />
</YogaDnsProfile>
|
4.启动yogadns,在Configuration Wizard界面,选择导入配置Import from a yogaDns configuration file
,导入上面的yogadns-config.xml
文件。
然后就可以自由联网,并不会自动激活windows。
经过上面域名解析屏蔽操作后,有可能会出现无线网络连上后,自动断开的问题,且在事件查看器里会看到下面这样的系统事件
WLAN AutoConfig 检测到受限连接,正在尝试自动恢复。
恢复类型: 4
错误代码: 0x0
触发原因: 5
IP 系列: 0
解决方法:将下面的内容保存为WcmSvc-disableBadStateTracking.reg
,然后双击文件生效(关闭无线网络异常状态监测)。
1
2
3
4
| Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WcmSvc]
"EnableBadStateTracking"=dword:00000000
|
厂商自己的软件(xx管家、my-xx等)也会自动激活(提交硬件信息到它们的服务器进行售后激活),所以一定要卸载这些软件。
即使不卸载这些软件,也要使用防火墙阻止联网。
如果用kms激活了,想还原成原来的正版激活,就需要知道密钥。
方法1: 使用命令获取,在powershell里执行
1
| (Get-WmiObject -query 'select * from SoftwareLicensingService').OA3xOriginalProductKey
|
方法2:使用注册表,按下windows+R快捷键,输入regedit回车,在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ClipSVC]
里LastBiosKey
就是密钥
微软公开windows访问的域名列表
Windows 10 spies on your use of System Settings