2011-05-02 100 views
10

背景: 我正在创建将加载到多个工作站的系统映像。图像加载到工作站后会发生Windows激活。这些电脑将不会连接到互联网,并会通过电话激活。以编程方式检查Windows 7是否已激活

问题: 我想以编程方式检查Windows 7是否已激活,以便我们的软件在Windows 7未激活时不会运行。我们的软件是用C#编写的。

回答

6

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

+0

谢谢亚历克斯。这将如何在C#应用程序中实现? – 2011-05-02 17:21:20

+1

谷歌搜索'“EntryPoint =”SLIsGenuineLocal“”'给我http://theroadtodelphi.wordpress.com/2009/10/12/determine-genuine-windows-installation-in-c/这对我很有用 - 尽可能多因为我的副本是合法的:) – 2011-05-02 17:31:24

+0

+1完美谢谢! – 2011-05-02 17:40:40

0

不知道它是否适用于Win7,但我found a post检查XP使用Win32_WindowsProductActivation类激活。

我将在我的机器上创建一个测试(x64 Win7)并查看它是否会返回激活状态,但至少可以让您在此期间尝试一些东西。

编辑(希望我继续读文档)该类页面上的评论中提到,这个类,在Win 7等版本)似乎与Software Licensing Classes所取代。我会看看我能否得到一个工作结果。

2

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

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

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

0

您可能会检查HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows激活技术\ AdminObject \ Store \ TotalValidations并查看它是否为1.这可能不是验证激活的有效方法,但您至少应该请耐心看看它是否得到验证。

相关问题