astel-labs.net

C#などのプログラミングTipsや雑記をつらつらと書くかもしれないブログです。

  • Home
RSS

WindowsのプロダクトIDを取得する

Posted on 2016年12月6日 by Nymphaea
No CommentsLeave a comment

たまたまプロダクトID を取得するにはどうしたらいいのか話題になったため、息抜きに書いてみました。

OS に限らず、様々な管理情報を取得するクラスとして、「ManagementObjectSearcher」クラスが利用できます。
OS に関する情報を取得するには、ManagementObjectSearcher クラスのコンストラクタに引数として “SELECT * FROM Win32_OperatingSystem” を入力することで様々な情報を取得できます。
プロダクトID はクエリによって取得されるプロパティのうち、PropertyData.Name が 「SerialNumber」のデータとなるので、Where で特定して取得しています。

メソッド構文による例(下

var productId = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get()
    .OfType<ManagementObject>()
    .SelectMany((m) => m.Properties.OfType<PropertyData>().Select((p) => new { p.Name, p.Value }))
    .Where((p) => p.Name == "SerialNumber")
    .Select((p) => (string)p.Value)
    .FirstOrDefault();

Console.WriteLine(productId ?? "情報を取得できませんでした。");

クエリ構文による例(下

var productId = (from ManagementObject m in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get()
                    from PropertyData p in m.Properties
                    where p.Name == "SerialNumber"
                    select (string)p.Value).FirstOrDefault();

Console.WriteLine(productId ?? "情報を取得できませんでした。");

また、ManagementObjectSearcher クラスのコンストラクタに渡すクエリを、”SELECT SerialNumber FROM Win32_OperatingSystem” とすると、Where を使わなくても簡単に特定させることもできます。
ManagementObjectSearcher クラスから取得するデータ型から特定の値を探し出すのは若干手間ですが、慣れれば様々な情報を簡単に取得することができます。

「Win32_OperatingSystem」以外にも様々な種類がありますので、調べてみると面白いかもしれません。

Categories: C#, プログラミング

 

raspberry pi に VSCode をインストールする
SQL Server – money型とdecimal型を併用した金額計算

コメントを残す

コメントを投稿するにはログインしてください。

  • 2016年12月
    日 月 火 水 木 金 土
     123
    45678910
    11121314151617
    18192021222324
    25262728293031
    « 6月   3月 »
  • 最近の投稿

    • raspberry pi に nginx をセットアップする
    • VSCode を日本語化する
    • raspberry pi に VSCode をインストールする
    • WindowsのプロダクトIDを取得する
    • SQL Server – money型とdecimal型を併用した金額計算
  • アーカイブ

    • 2020年3月
    • 2016年12月
    • 2014年6月
    • 2014年5月
    • 2013年7月
    • 2012年11月
    • 2012年7月
    • 2012年5月
    • 2012年4月
    • 2011年4月
    • 2011年1月
    • 2010年11月
    • 2010年10月
    • 2010年9月
    • 2010年8月
    • 2010年7月
    • 2010年6月
    • 2010年5月
    • 2010年4月
  • カテゴリー

    • C#
    • jQuery
    • OpenCV
    • raspberry pi
    • SharePoint
    • Silverlight
    • SQL Server
    • WCF
    • WPF
    • プログラミング
    • 未分類
    • 雑記
© astel-labs.net. Proudly Powered by WordPress | Nest Theme by YChong

このブログ内で公開されているソースコードおよびサンプルプログラムに関わるライセンスはすべて修正BSDライセンス(New BSD License)として公開しています。
但し、サンプルプログラムに含まれる外部アセンブリが同様のライセンスとは限りませんので、利用する前に必ずすべてのライセンスの確認を行ってください。