![如何从启动 CD 获取许可证密钥?](https://linux22.com/image/487749/%E5%A6%82%E4%BD%95%E4%BB%8E%E5%90%AF%E5%8A%A8%20CD%20%E8%8E%B7%E5%8F%96%E8%AE%B8%E5%8F%AF%E8%AF%81%E5%AF%86%E9%92%A5%EF%BC%9F.png)
我们最近购买了一台使用了一段时间的服务器,但没有相关软件、登录名等。我们尝试清空管理员帐户密码,但没有成功。我们还尝试对密码进行一些更深入的编辑,但也没有用。
现在,我想做的是使用服务器上现有的注册表项重新安装 Windows。我读到您可以访问注册表中的产品密钥,并且使用密码工具(Linux 启动 CD)我们可以查看注册表。当我尝试此操作时,我得到的是 ProductId(哪个版本的 Windows),而不是注册表项。
我尝试从 Windows Server 2003 R2 中读取的操作系统。
答案1
好的,我可以使用以下命令检索它:
下载 AC2T KeyViewer (http://www.ac2tech.com/tools/keyviewer/keyviewer.zip)
我使用了一个密码重置工具(不确定它是什么,只是我用了好几年的那个),它在启动 CD 上有一个注册表查看器。我导航到
Microsoft->Windows NT->Current Version->DigitalProductId
一旦我得到了该值(它很长,大约 12 行十六进制),就将整个值输入 KeyViewer 应用程序的“原始密钥”选项卡中。它应该会输出您的产品密钥。请注意,这在某些版本的 Windows Server 中不起作用。
我发现的另一种替代方法是以下 powershell 脚本:
# create table to convert in base 24
$map="BCDFGHJKMPQRTVWXY2346789"
# Read registry Key
$value = (get-itemproperty "HKLM:\\SOFTWARE\Microsoft\Windows NT\CurrentVersion").digitalproductid[0x34..0x42]
# Convert in Hexa to show you the Raw Key
$hexa = ""
$value | foreach {
$hexa = $_.ToString("X2") + $hexa
}
"Raw Key Big Endian: $hexa"
# find the Product Key
$ProductKey = ""
for ($i = 24; $i -ge 0; $i--) {
$r = 0
for ($j = 14; $j -ge 0; $j--) {
$r = ($r * 256) -bxor $value[$j]
$value[$j] = [math]::Floor([double]($r/24))
$r = $r % 24
}
$ProductKey = $map[$r] + $ProductKey
if (($i % 5) -eq 0 -and $i -ne 0) {
$ProductKey = "-" + $ProductKey
}
}
"Product Key: $ProductKey"
在此脚本中,您可以将 $value 变量替换为以下内容:
- 从无法启动的机器中找到上述注册表值中的内存位置 34 至 42。
- 将每对数字转换为十进制(即 A1=161)
- 使用这些值构建一个数组,例如 $value = (161,...)
运行脚本然后返回您的产品密钥。
答案2
如果盒子上没有 OEM 许可证标签(肯定没有,否则你也不会在这里),那么产品密钥可以从微软的批量许可服务网站,甚至是您的经销商。
答案3
我不太清楚您是否成功清除了管理员密码。
http://www.petri.co.il/forgot_administrator_password.htm
对于解决旧服务器和机器的密码丢失问题,这个网站 -> <- 一定是我发现的最有用的网站。
那里有一个出色的可启动 Linux 映像可供下载,它可让您轻松重置管理员密码。我用过很多次,每次都很管用。
完成后,您就可以登录 Windows,我们就可以解决您的 Windows 密钥问题。
您可以使用 BelArc 或 Magical Jellybean 密钥查找器等工具轻松获得它。
答案4
您应该能够从 winPE 磁盘运行类似 Magic Jellybean Keyfinder 的程序。