C#で作成しているプログラム中で
そのプログラムを動かしている該当PCの起動日時を取得したいと考えています。
作成したソース(2パターン)
下記2つの方法を試しましたが
いずれも高速スタートアップが有効になっている環境だと
想定した起動日時を取得することが出来ません。
高速スタートアップの場合は値がリセットされていない。
C#
1ManagementClass mc = new ManagementClass("Win32_OperatingSystem"); 2ManagementObjectCollection moc = mc.GetInstances(); 3foreach (ManagementObject mo in moc) 4{ 5 mo["LastBootUpTime"]; // この値を起動日時として取得(20190319143723.500000+540) 6 // この値が高速スタートアップ環境の場合はシャットダウンで値が更新されない為、前回再起動時の日時となる 7}
C#
1PerformanceCounter upTime = new PerformanceCounter("System", "System Up Time"); 2upTime.NextValue(); 3float value = upTime.NextValue(); // この値を起動時間(経過秒)として現在日時から計算で起動日時を求める 4// この値も高速スタートアップ環境の場合はシャットダウンで値がリセットされない為、前回再起動時からの累積動作時間となる
どのようにすると
高速スタートアップ環境での起動日時を取得することができるのでしょうか
高速スタートアップが有効になってる環境だとどういう値が返されるのでしょう
回答2件
あなたの回答
tips
プレビュー