2011年6月15日水曜日

パソコンがスリープ状態にならないときのチェック方法(Windows 7)

弊社も東電管轄内なので、15%の節電をせざるを得ないので、会社のパソコンを未使用時にスリープに移行するように設定を始めた。その中で、パソコンがスリープにならなかったり、また、スリープになっても直ぐに復帰してしまう現象が見受けられた。

マイクロソフトのWEBサイトにその原因を特定する為の調査コマンドが掲載されていたのでそのコマンドを記しておく。

powercfg /energy -output %USERPROFILE%\Desktop\energy.html
これを実行すると、1分間のシステム監視を行ってデスクトップにログを出力するので、「エラー」項目にスリープ移行を妨げているデバイスドライバなどがないか確認する。幾つもエラー項目が出るが、通常はそれでも問題なくスリープに入れるみたい。

自分のパソコンで実行してみたら、確かに原因が特定できた。

2011年6月9日木曜日

最近のウイルス

ある日、厚生労働省からあなた宛にメールが届きました。
「厚生労働省からのメールか、珍しいな。お!?、添付ファイルが有る。なになに。」
放射線被ばくに関する基礎知識.exe.doc

普段からウイルスに感染しないように注意を払っているあなたは、メールの添付ファイルは直接開かず、一旦自分のパソコンにダウンロードし確認してから開きます。

さて、今回のファイルは、プロパティをみても放射線被ばく・・・、会社名は厚生労働省となっており、
アイコンもワードのアイコンになっており、ファイルの拡張子もdocとなっています。
これは間違いなく厚生労働省から送られてきたワード文書だと思い安心してファイルを開きました。


すると、

ジャーン、何と、添付されていたファイルはワード文書ではなく、ウイルスでした。


ファイルを開く前にあれだけ注意をしていたのに、何故分からなかったのでしょう。

実は、最近こういったウイルスが増えてきているそうです。ファイルの名前の途中に文字を右から左に表示する制御コードを埋め込むと、この様な事が可能になってしまいます。本当のファイル名は 放射線被ばくに関する基礎知識.cod.exeなのですが、RLOを使いファイル名を放射線被ばくに関する基礎知識.exe.docに見せかけています。
実際のウイルスはこんな画面は一切表示せず、見えない所で活動します。
従って、今回のような方法でウイルスに感染した場合は、感染したことに気付かない可能性が高いです。

それでは我々利用者はどのような点に気をつければ良いのでしょうか。
原則は、普段メールのやり取りをしていない人からのメールは、どんなに信用できる法人であっても団体、国の機関であっても、疑ってかかり、添付ファイルは開かない。どうしても開く必要が有る場合は、次の点を確認します。

一つは種類です。下に、本当のワード文書と今回のウイルスを比較の為に2つ並べて表示しました。本当のワード文書は種類に「Microsoft Word 文書」と表示されており、一方、ウイルスは「アプリケーション」と表示されています。従って、ここを確認すればこのファイルはワード文書ではなくプログラムだと言うことが分かります。
もう一つは、ファイル名の中に.exeやexe.と言う文字が入っていたら絶対に開かない。exeの前または後ろに.(ピリオド)が無ければ問題有りません。普通、ファイル名の中に.exeやexe.という文字は使いませんから。この2つの点に気をつけてもらえれば、こういった方法で侵入しようとするウイルスは防げると思います。
その他、セキュリティー対策ソフトのウイルス定義ファイルは常に最新の状態にしておくことは肝要です。

2011年6月3日金曜日

VB.NET CSVファイルをデータテーブルに読み込む方法について検証

業務上必要に迫られて今回3つの方法を検証したが、結果的にはMicrosoft.VisualBasic.FileIO.TextFieldParserに軍配が上がった。

方法1)
System.IO.StreamReaderクラスでレコードを1行ずつ読み込み、読み込んだレコードをSystem.String.Splitメソッドを使ってカンマでセパレートし、データテーブルに格納する。
結果)
ダブルクォーテーション中に在るカンマを区切り文字として認識してしまい、一つの文字列が2つの文字列に分けられてしまう現象が発生。でも、実数は正しく読み込まれた。また、コードが多く可読性が低い。

方法2)
OleDbConnectionクラスとOleDbDataAdapterクラスを使い、データテーブルに格納する。
結果)
文字列は正しく読み込まれたが、実数の小数点以下が読み込まれない現象が発生。予めデータテーブルにフィールドを追加しておき、そのフィールドのデータ型にDECIMALを指定しておいても変わらなかった。コードは少なく可読性が高い。

方法3)Microsoft.VisualBasic.FileIO.TextFieldParserクラスと同クラスReadFieldsメソッドを使い、データテーブルに格納する。
結果)
文字列も実数も正しく読み込まれた。コードは少なく可読性が高い。

番外編)
この他にもネットには方法が存在していた。スピードを求めるならば、既存のクラスを使用するのではなく、自力で解析コードを書くことみたいだ。