以编程方式检查Windows 7是否被激活

背景:我正在创build将被加载到多个工作站的系统映像。 将图像加载到工作站后,Windows激活将会发生。 这些电脑将不会连接到互联网,并将通过电话激活。

问题:我想以编程方式检查Windows 7是否被激活,这样如果Windows 7没有被激活,我们的软件将不会运行。 我们的软件是用C#编写的。

软件授权API – SLIAPI ,看看SLIsGenuineLocal() 。 (取代LegitCheck

您可以在机器上运行“Slmgr.vbs”,然后重定向输出以进行检查。

 System.Diagnostics.Process.Start(@"cscript Slmgr.vbs > D:\\log.txt"); 

这将返回您需要的所有信息。 虽然不是最干净的方式。

不知道它是否适用于Win7,但我发现一个帖子 ,使用Win32_WindowsProductActivation类检查XP的激活。

我将在我的机器上建立一个测试(x64 Win7),看看它是否返回激活,但至少给你一些尝试在同一时间。

编辑 (希望我一直在阅读文档)对该类页面的评论提到,这个类,在Win 7和其他版本)似乎被软件许可类取代。 我会看看我能否得到一个工作结果。

您可以检查HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows激活技术\ AdminObject \ Store \ TotalValidations,看看它是否是1.这可能不是验证激活的有效方法,但你至少应该看到如果它被验证。