teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

高速スタートアップ環境の場合の値について修正・追記

2019/04/10 00:47

投稿

aaaaaaaaaaaaaab
aaaaaaaaaaaaaab

スコア7

title CHANGED
File without changes
body CHANGED
@@ -3,25 +3,26 @@
3
3
 
4
4
  ### 作成したソース(2パターン)
5
5
 
6
+ 下記2つの方法を試しましたが
7
+ いずれも高速スタートアップが有効になっている環境だと
8
+ 想定した起動日時を取得することが出来ません。
9
+ 高速スタートアップの場合は値がリセットされていない。
6
10
  ```C#
7
11
  ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
8
12
  ManagementObjectCollection moc = mc.GetInstances();
9
13
  foreach (ManagementObject mo in moc)
10
14
  {
11
- mo["LastBootUpTime"]; // この値を起動日時として取得
15
+ mo["LastBootUpTime"]; // この値を起動日時として取得(20190319143723.500000+540)
16
+ // この値が高速スタートアップ環境の場合はシャットダウンで値が更新されない為、前回再起動時の日時となる
12
17
  }
13
18
  ```
14
19
  ```C#
15
20
  PerformanceCounter upTime = new PerformanceCounter("System", "System Up Time");
16
21
  upTime.NextValue();
17
- float value = upTime.NextValue(); //この値と現在日時を使って計算で起動日時を求める
22
+ float value = upTime.NextValue(); // この値を起動時間(経過秒)して現在日時から計算で起動日時を求める
23
+ // この値も高速スタートアップ環境の場合はシャットダウンで値がリセットされない為、前回再起動時からの累積動作時間となる
18
24
  ```
19
- 上記2つの方法を試しましたが
20
- いずれも高速スタートアップが有効になっている環境だと
21
- 想定した起動日時を取得することが出来ません。
22
- 高速スタートアップの場合は値がリセットされていない。
23
25
 
24
26
 
25
27
  どのようにすると
26
- 高速スタートアップ環境で起動日時を取得することができるのか
28
+ 高速スタートアップ環境で起動日時を取得することができるのでしょう
27
- ご教授いただけませんでしょうか