背景: 我正在創建將加載到多個工作站的系統映像。圖像加載到工作站後會發生Windows激活。這些電腦將不會連接到互聯網,並會通過電話激活。以編程方式檢查Windows 7是否已激活
問題: 我想以編程方式檢查Windows 7是否已激活,以便我們的軟件在Windows 7未激活時不會運行。我們的軟件是用C#編寫的。
背景: 我正在創建將加載到多個工作站的系統映像。圖像加載到工作站後會發生Windows激活。這些電腦將不會連接到互聯網,並會通過電話激活。以編程方式檢查Windows 7是否已激活
問題: 我想以編程方式檢查Windows 7是否已激活,以便我們的軟件在Windows 7未激活時不會運行。我們的軟件是用C#編寫的。
軟件授權API - SLIAPI,看看SLIsGenuineLocal()
。 (取代LegitCheck
)
不知道它是否適用於Win7,但我found a post檢查XP使用Win32_WindowsProductActivation類激活。
我將在我的機器上創建一個測試(x64 Win7)並查看它是否會返回激活狀態,但至少可以讓您在此期間嘗試一些東西。
編輯(希望我繼續讀文檔)該類頁面上的評論中提到,這個類,在Win 7等版本)似乎與Software Licensing Classes所取代。我會看看我能否得到一個工作結果。
您可以在機器上運行「Slmgr.vbs」,然後重定向輸出以檢查。
System.Diagnostics.Process.Start(@"cscript Slmgr.vbs > D:\\log.txt");
這將返回所有你需要的信息。雖然不是最乾淨的方式。
您可能會檢查HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows激活技術\ AdminObject \ Store \ TotalValidations並查看它是否爲1.這可能不是驗證激活的有效方法,但您至少應該請耐心看看它是否得到驗證。
謝謝亞歷克斯。這將如何在C#應用程序中實現? – 2011-05-02 17:21:20
谷歌搜索'「EntryPoint =」SLIsGenuineLocal「」'給我http://theroadtodelphi.wordpress.com/2009/10/12/determine-genuine-windows-installation-in-c/這對我很有用 - 儘可能多因爲我的副本是合法的:) – 2011-05-02 17:31:24
+1完美謝謝! – 2011-05-02 17:40:40