開発環境:visual studio2015
開発言語:c#.net
現在動作しているPCが本当に想定された時間に起動したものなのか?
これを知りたい時がありました。
理由としては、もしかして想定外の再起動処理をしてないか?
または、停電によるインフラ側の不具合があるのではないか?
等です。
もちろん、windowsLogを見ればいっぱつなのですが
その操作が容易に出来ない環境下では現実的ではありません。
アプリケーションで取得出来たらと考えて【WMI】を利用しようということになりました。
【WMI】とは【Windows Management Instrumentation】の略で
簡単に言うとシステムに関する情報が取得出来たり、操作出来たり・・・
というものです。
では早速やってみます。
まずはvisualstudioから任意のプロジェクト作成します。
作成したら、参照の追加で【system.management.dll 】を追加します。
【ソリューションエクスプローラー】の【参照】を右クリックし
【参照の追加】をクリック
参照マネージャーから【System.Management】を選択して【OK】をクリック
これで【system.management.dll 】が追加されます。
追加したら、下記のコードを記述します。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace getFromWMI { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { System.Management.ManagementClass mc = new System.Management.ManagementClass("Win32_OperatingSystem"); System.Management.ManagementObjectCollection moc = mc.GetInstances(); foreach (System.Management.ManagementObject mo in moc) { Console.WriteLine(mo["LastBootUpTime"]); mo.Dispose(); } moc.Dispose(); mc.Dispose(); } } }
結果は下記のとおり
【20190704085037.351049+540】と出力されました。
なのでPCが起動した時間は
【2019年7月4日8時50分37秒351049ms】
となります。
【+540】はグリニッジ標準時から540分の差があるよという意味です。