2011-05-02 110 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.這可能不是驗證激活的有效方法,但您至少應該請耐心看看它是否得到驗證。

相關問題