![如何从远程计算机的注册表中获取 Windows 产品 ID](https://linux22.com/image/1227112/%E5%A6%82%E4%BD%95%E4%BB%8E%E8%BF%9C%E7%A8%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E6%B3%A8%E5%86%8C%E8%A1%A8%E4%B8%AD%E8%8E%B7%E5%8F%96%20Windows%20%E4%BA%A7%E5%93%81%20ID.png)
希望获得一些帮助,了解如何从注册表中获取 Windows 产品 ID,以便在 Windows(Windows 2003 Server、2008 Server)位于域或工作组中时可以使用该产品 ID,并且远程机器。
例如,我在域中的工作站上,我想要一个纯 c#(如果可能)解决方案来获取网络上特定 Windows 2008 计算机的产品 ID(它实际上是运行 SQL Server 实例的计算机)。
抱歉造成混淆,我希望我已经充分扩展了这个问题,以便更清楚地解释情况。
答案1
看看神奇的 Jellybean Keyfinderhttp://www.magicaljellybean.com/keyfinder/
Magical Jelly Bean Keyfinder 是一款免费的开源实用程序,可从您的注册表中检索用于安装 Windows 的产品密钥 (cd 密钥)。它允许您打印或保存密钥以妥善保管。它适用于 Windows 95、98、ME、2000、XP、Vista、7、Server 2003、Server 2008、Office XP、Office 2003 和 Office 2007 系列产品
答案2
尝试使用
EXEC xp_instance_regread'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion','ProductId'
答案3
产品密钥不保存在注册表中。产品 ID(部分基于产品密钥)可在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
答案4
我进行了一些创新思考,并想出了一个略有不同的解决方案,只需进行测试即可。我想我可以通过 SQL 实例从机器中获取产品 ID...
DECLARE @retvalue int, @data varchar(500)
EXECUTE @retvalue = master.dbo.xp_instance_regread 'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
'ProductId', @param = @data OUTPUT
PRINT 'ProductId: '+ @data
如果此解决方案有效,我将更新此内容,但是如果有人有其他解决方案,请告诉我。