背景: 我正在创建将加载到多个工作站的系统映像。Windows 激活将在图像加载到工作站后进行。这些计算机将不会连接到 Internet,而是通过电话激活。
问: 我想以编程方式检查 Windows 7 是否已激活,这样如果 Windows 7 未激活,我们的软件将无法运行。我们的软件是用 C# 编写的。
背景: 我正在创建将加载到多个工作站的系统映像。Windows 激活将在图像加载到工作站后进行。这些计算机将不会连接到 Internet,而是通过电话激活。
问: 我想以编程方式检查 Windows 7 是否已激活,这样如果 Windows 7 未激活,我们的软件将无法运行。我们的软件是用 C# 编写的。
Software Licensing API- SLIAPI,看一看SLIsGenuineLocal()
。(替换LegitCheck
)
您可以在机器上运行“Slmgr.vbs”,然后重定向输出以进行检查。
System.Diagnostics.Process.Start(@"cscript Slmgr.vbs > D:\\log.txt");
这将返回您需要的所有信息。虽然不是最干净的方法。
不确定它是否适用于 Win7,但我发现了一篇使用Win32_WindowsProductActivation类检查 XP 是否激活的帖子。
我将在我的机器(x64 Win7)上构建一个测试,看看它是否返回激活状态,但至少同时给你一些尝试的东西。
编辑 (希望我继续阅读文档)该课程页面上的评论提到该课程,在 Win 7 和其他版本上)似乎已替换为Software Licensing Classes。我会看看我能不能得到一个工作结果。
您可以检查 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows Activation Technologies\AdminObject\Store\TotalValidations 并查看它是否为 1。这可能不是验证激活的确定方法,但您至少应该能够看到如果它被验证。
您可以使用此参考:https ://github.com/Marko97IT/CWA 在 README.md 中您可以找到下载链接。