如何检查Windows版本是否为正版?

问题描述:

是否可以通过编程检查Windows安装是否为Genuine或不正确? 让我们说我想从C,C++,Java或Python检查Windows 7。如何检查Windows版本是否为正版?

此从CodeProject,在C++(Check for Windows Genuine in VC++

#include <slpublic.h> 
#pragma comment(lib,"Slwga.lib") 

bool IsWindowsGenuine() 
{ 
    GUID uid; 
    RPC_WSTR rpc=(RPC_WSTR)_T("55c92734-d682-4d71-983e-d6ec3f16059f"); 
    UuidFromString(rpc,&uid); 
    SL_GENUINE_STATE state; 
    SLIsGenuineLocal(&uid,&state,NULL); 
    return state == SL_GENUINE_STATE::SL_GEN_STATE_IS_GENUINE; 
} 
+8

'if(expression)return true; [else] return false;'可以用'return expression替换;' – fredoverflow

+0

是的,刚刚从代码项目中复制,没有自己写:D –

+2

return state == SL_GENUINE_STATE :: SL_GEN_STATE_IS_GENUINE; – Tim

here:这里是一个VBScript,做它

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colWPA = objWMIService.ExecQuery _ 
("Select * from Win32_WindowsProductActivation") 
For Each objWPA in colWPA 
Wscript.Echo "Activation Required: " & objWPA.ActivationRequired 
Wscript.Echo "Description: " & objWPA.Description 
Wscript.Echo "Product ID: " & objWPA.ProductID 
Wscript.Echo "Remaining Evaluation Period: " & _ 
objWPA.RemainingEvaluationPeriod 
Wscript.Echo "Remaining Grace Period: " & objWPA.RemainingGracePeriod 
Wscript.Echo "Server Name: " & objWPA.ServerName 
Next 

Java的解决方案是使用Process运行C++或VBScript解决方案作为一个子进程。