自分のパソコン生活が一目で分かるLastlog

朝からがんばって、ウェブブラウザ上でWindowsのログオンログを表示できるActiveXコントロールを作りました。
毎日、目が覚めるとパソコンを起動して寝る前に停止しているので、lastlogをみれば自分の生活が見えてくるはずだと! と寝起き時に思いついたからです。


ウェブブラウザにした理由は、

  1. ウェブブラウザはパソコンと同時に立ち上がる
  2. Windows標準のイベントビューアーは立ち上げるのが面倒くさいし、なんかいっぱい出てて見づらい

からです。なんとなくで、あまりはっきりした理由ではありません。


こんな感じです。

アドレスバー下の『lastlog』ブックマークラベルをクリックするだけで超簡単に確認できます。HTMLは見てのとおりテーブルのセンタリングすらされていません。でもOKです。


作ったものの詳細はこちらに書きました。


作った後に気づいたこととしては、スタンバイ状態になったときのログが取れないということです。
ログアウトせずにうっかり寝てしまったら、ログオフのログが取れません。

てかこれlastlogじゃないですよね。
lastコマンドは、wtmpを表示してます。
脳内で混じってました。これは痛い。
lastコマンドのようなログをWindowsで出すもの、略してlastlog。おk

クライアント側のHTMLソース

<html>
<head>
<style>
table {
  font-size: 12px;
  font-family: monospace;
}
th {
  background-color: #efefff;
  border: 1px dotted silver;
}
td {
  border: 1px dotted silver;
}
</style>
<script type="text/javascript">
  var RECORD_MAX = 16;    // 最大表示数
  
  function drawPage()
  {
    var page = new String(
      "<table><caption>Log-on/off履歴</caption>"
      + "<tr><th>日付</th><th>ユーザー名</th><th>イベント名</th></tr>"
    );
    
    var lastLogReader = new ActiveXObject("SecurityLogReader.LastLogReader");
    if (!lastLogReader) {
      alert("dll open error");
      return;
    }
    
    var count = 1;
    lastLogReader.open();
    while (lastLogReader.readNext) {
      page += "<tr><td>" + UNIXTimeToString(lastLogReader.time) + "</td>"
           + "<td>" + lastLogReader.userName + "</td>"
           + "<td>" + lastLogReader.eventName + "</td></tr>";
      if (++count > RECORD_MAX) {
        break;
      }
    }
    lastLogReader.close();
    
    page += "</table>";
    document.getElementById("table").innerHTML = page;
  }
  
  function UNIXTimeToString(unixtime)
  {
    var date = new Date(unixtime * 1000);
    return date.toLocaleString();
  }
</script>
<title>Log-on/off履歴</title>
</head>
<body onload="drawPage()">
<div id="table"></div>
</body>

カレンダー形式にするとかっこいいんじゃないかとか、平均値を出すのはどうかとか思ったのですが、思っただけで、テーブルにデータを並べるだけにしました。