Programmatically check whether Windows 7 is activated
Background: I am creating开发者_如何学C system images that will be loaded onto several workstations. Windows activation will occur after the images are loaded onto the workstation. These computers will not be connected to the Internet and will be activated over the phone.
Question: I would like to check programmatically if Windows 7 is activated or not, so that our software will not run if Windows 7 is not activated. Our software is written in C#.
The Software Licensing API - SLIAPI, take at look at SLIsGenuineLocal()
. (Replaces LegitCheck
)
You can run "Slmgr.vbs" on the machine and then redirect the output to check.
System.Diagnostics.Process.Start(@"cscript Slmgr.vbs > D:\\log.txt");
This will return all the information you need. Not the cleanest way to do it though.
You may check HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows Activation Technologies\AdminObject\Store\TotalValidations and see if it is 1. This may not be the definative way to verify activation, but you should at least be abel to see if it was validated.
You can use this reference: https://github.com/Marko97IT/CWA In the README.md you can find the download link.
Not sure if it applies to Win7, but I found a post that checks XP for activation using a Win32_WindowsProductActivation class.
I'll build a test one on my machine (x64 Win7) and see if it returns activated or not, but at least gives you something to try out in the mean time.
EDIT (wish I kept reading the docs) A comment on that class page mentions that this class, on Win 7 and other versions) appears to be replaced with the Software Licensing Classes. I'll see if I can get a working result.
精彩评论