自分のパソコン生活が一目で分かるLastlog
朝からがんばって、ウェブブラウザ上でWindowsのログオンログを表示できるActiveXコントロールを作りました。
毎日、目が覚めるとパソコンを起動して寝る前に停止しているので、lastlogをみれば自分の生活が見えてくるはずだと! と寝起き時に思いついたからです。
ウェブブラウザにした理由は、
- ウェブブラウザはパソコンと同時に立ち上がる
- 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>
カレンダー形式にするとかっこいいんじゃないかとか、平均値を出すのはどうかとか思ったのですが、思っただけで、テーブルにデータを並べるだけにしました。