如何在Ubuntu上读取Windows 8的许可证密钥?

我在我的笔记本电脑上安装了双系统,Windows 8和Ubuntu。
在Ubuntu下是否有可能读取Windows许可证密钥?(我猜它可能以某种方式隐藏在Windows注册表中)

这是一个UEFI系统吗?如果是的话,那么它很可能保存在UEFI密钥内存中。 - Amith KK
是的,这是一个UEFI系统。我已经找到了并在下面发布了答案 ;) - rubo77
2评论者们:这不是离题的。它是关于使用Ubuntu在Windows安装中查找信息的。完全没问题。 - Seth
同意,这是一个相关的话题,尤其考虑到它似乎确实是关于从固件存储中读取ACPI信息:这些信息甚至都不存储在我们大多数人认为的Windows系统内部。 - Eliah Kagan
4个回答

我在这里找到了它。关键似乎存储在ACPI固件中。
sudo strings /sys/firmware/acpi/tables/MSDM

这给了我以下的结果:
MSDMU
LENOVOCB-01   
ACPI
#####-#####-#####-#####-#####

(我用#替换了产品密钥)
如果你只需要密钥作为输出,可以使用| tail -n1管道命令。

2可能是联想特有的,在固件中设置了这个密钥。我的工作电脑(戴尔笔记本和康柏台式机)都有SLIC,但没有MSDM。不可否认,这两台电脑都比Windows 8早几年。 - The Dude
1在更新的戴尔个人电脑上,实际上存在该表格。我在2014年6月的两台戴尔Precision T1700台式机上找到了它。 - Jorge Suárez de Lis
这在联想Yoga3上运行得非常好。 - seanbreeden
适用于我的UEFI Acer Aspire V。因此,适用于其他UEFI系统。 - Torrien

如果你的硬盘坏了,需要安装到一个新的硬盘上,或者只是想知道没有硬盘的情况下的密钥,这可能会对你有所帮助:
sudo acpidump > myhiddenkey.txt

在此之后,在您的“主文件夹”中搜索您刚刚创建的 .txt 文件。按下 F3 键在文件中搜索“MSDM”一词,就可以找到了!
如果您还没有安装 acpmdump,请现在安装它。
sudo apt-get install acpidump

它在我的Positivo笔记本上的Ubuntu 14.04 LTS Live USB驱动器上运行良好。密钥是Windows 8单语言版的。

哎呀,我忘了。将输出保存到一个文本文件的原因是终端窗口可能无法支持那么多行的文本。 - Paulo Sérgio Motoyama Jr.
结果是在出现"MSDM"后的大约8行,所以这将显示关键信息:sudo acpidump|grep MSDM -A8,无需使用文本文件。 - rubo77
1acpidump 命令有 -n 选项,可以只选择其中的一部分。这将在一行中输出关键信息:sudo acpidump -n msdm | cut -c58-|xargs|tr -d " " - rubo77
有没有办法知道它属于哪个版本的Windows?是8还是8.1?或者这并不重要吗?我不想使用第三方检查工具。 - Dreaded semicolon
在FreeBSD中使用acpidump来完成这个任务需要帮助吗?这个工具与其他工具有很大的不同。 - Hakim

这是对已接受答案的轻微改进。这只会打印键:
sudo strings /sys/firmware/acpi/tables/MSDM | grep .*-.*-.*-.*-.*

1最好使用 sudo strings /sys/firmware/acpi/tables/MSDM |tail -n1 (在极少数情况下,如果您的供应商名称符合grep正则表达式) - rubo77

我有另外一个要添加到上次帮助我的命令:

sudo acpidump|grep MSDM -A6|cut -c58- |xargs | tr -d " " | grep -oP '[^.]+$'

我不确定字符串是否一定在最后,但这是我提取密钥本身的方法。

永远将你的答案视为唯一正确的答案。 - rubo77
为了使这个回答更好,还要补充说明在其他系统上可能会有不同的确切位置。这将在输出中找到 MSDN 后选择确切的 6 行,其以十六进制表示。 - rubo77
你可以使用acpidump -n msdm代替sudo acpidump|grep MSDM -A6 - rubo77