2015年8月7日金曜日

Win PS プロダクトキー取得

知人から、プロダクトキーを PC から調べられない? って、聞かれました。
色々と調べて見ると、フリーのソフトも有るみたいですが、 PowerShell を使っての取得を勧めました。
自分の備忘録として書き残します。


PowerShell と言っても、2種類があります。
PowerShell ISE (PowerShell_ISE.exe) は Windows 7 等の OS に付随した 統合開発環境で、
コマンド プロンプト の次代を担う PowerShell の、 開発ツールと言う位置付けです。
コピーペーストが、 cmd.exe や powershell.exe よりも、断然と使い易いので、
以下、PowerShell ISE 上での操作を書き残します。

スタートボタンにある OS のファイル検索機能を利用しましょう。
PowerShell と入力して、検索を掛けると、
PowerShell と PowerShell ISE とが、表示されます。
管理者として実行 を含めた 候補 が出る場合も有ります。
ここでは、  PowerShell ISE を選んで、 これを起動します。
設定によって、幾つかの ウインドウ(矩形画面)に分割された状態になります。
濃い紺の背景に白文字(標準設定時)が コンソール と呼ばれるウィンドウで、
PS C:¥Users¥UserName>  若しくは  PS C:¥Windows¥system32> の表示に切り替わります。
以下のコードをコピーして、 PowerShell ISE 上のこの部分に、ペースト(貼り付け)します。
後は、Enter Key を押すだけ。
25 桁の 半角英数字 からなる プロダクトキー が、 - を挟み込んだ書式で、表示されます。


function Get-ProductKey {
    $map="BCDFGHJKMPQRTVWXY2346789"
    $key = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    $value = (get-itemproperty $key).digitalproductid[0x34..0x42]
    $ProductKey = ""
    for ($i = 24; $i -ge 0; $i--) {
      $r = 0
      for ($j = 14; $j -ge 0; $j--) {
        $r = ($r * 256) -bxor $value[$j]
        $value[$j] = [math]::Floor([double]($r/24))
        $r = $r % 24
      }
      $ProductKey = $map[$r] + $ProductKey
      if (($i % 5) -eq 0 -and $i -ne 0) {
        $ProductKey = "-" + $ProductKey
      }
    }
    $ProductKey
}
Get-ProductKey


このコードで、簡単に、取得出来ます。
コンソール ウィンドウの表示は普通にコピー & ペーストが可能です。

ソフトに 頼る程の事では 無い様ですね。


PS: 
知人に細かい話を聴ける雰囲気ではなかったので、利用目的は不明なのですが、時期的に Win10 絡みで何かあるのでしょうか?。
まぁ、何かの参考になるかもと思い、投稿して置きます。.



2 件のコメント:

  1. 通りすがりの者です。
    パソコンにどういうわけかプロダクトキーのシールが貼られておらず困っていまして、こちらからコピペさせていただきました。
    有り難うございました。

    返信削除
    返信
    1. 通りすがりの 匿名 さま コメントありがとうございます。

      お役に立てて、光栄です。
      しかし、 プロダクトキーのシール なし なんてぇ のがあるんですね!。  びっくり。
      まるで、自作パソコンみたいですね。

      削除