背景: 複数のワークステーションにロードされるシステムイメージを作成しています。イメージがワークステーションにロードされた後、Windowsのアクティブ化が行われます。これらのコンピューターはインターネットに接続されず、電話でアクティブ化されます。
質問: Windows 7がアクティブ化されているかどうかをプログラムで確認したいので、Windows7がアクティブ化されていない場合はソフトウェアが実行されません。私たちのソフトウェアはC#で書かれています。
背景: 複数のワークステーションにロードされるシステムイメージを作成しています。イメージがワークステーションにロードされた後、Windowsのアクティブ化が行われます。これらのコンピューターはインターネットに接続されず、電話でアクティブ化されます。
質問: Windows 7がアクティブ化されているかどうかをプログラムで確認したいので、Windows7がアクティブ化されていない場合はソフトウェアが実行されません。私たちのソフトウェアはC#で書かれています。
ソフトウェアライセンスAPI- SLIAPI、を見てくださいSLIsGenuineLocal()
。(置換LegitCheck
)
マシンで「Slmgr.vbs」を実行してから、出力をリダイレクトしてチェックすることができます。
System.Diagnostics.Process.Start(@"cscript Slmgr.vbs > D:\\log.txt");
これにより、必要なすべての情報が返されます。しかし、それを行うための最もクリーンな方法ではありません。
Win7に適用されるかどうかはわかりませんが、 Win32_WindowsProductActivationクラスを使用してXPのアクティベーションをチェックする投稿を見つけました。
自分のマシン(x64 Win7)でテスト用のものを作成し、アクティブ化された状態に戻るかどうかを確認しますが、少なくともその間に試してみることができます。
編集 (ドキュメントを読み続けたい)そのクラスページのコメントには、このクラス(Win 7およびその他のバージョン)がソフトウェアライセンスクラスに置き換えられているように見えることが記載されています。動作する結果が得られるかどうかを確認します。
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows Activation Technologies \ AdminObject \ Store \ TotalValidationsをチェックして、1であるかどうかを確認できます。これは、アクティブ化を確認するための決定的な方法ではない場合がありますが、少なくとも確認する必要があります。検証された場合。
このリファレンスを使用できます:https ://github.com/Marko97IT/CWA README.mdには、ダウンロードリンクがあります。