MSINFO32 の実行がエラーになる場合の対処方法

こんな事あんな事をやっていたため時間が取れず、更新間隔が開いてしまった。少なくとも週一で更新したいと思っているので忘れず時々ご覧いただきたい。

さてこれまでの 記事で 紹介してきた システム情報ツール (MSINFO32) について、特定の条件でエラーになる事が分かったのでそれについて追記したい。具体的には以下の条件の場合、MSINFO32 を実行するとエラーが発生したり、システム情報が正しくファイルに書き込まれない。

  • Windows 7 (日本語版) を実行している
  • Office 2007 SP2 または Office 2010 に含まれる Office IME 2007 または Office IME 2010 を既定の入力方式にしている
  • MSINFO32.exe を実行してシステム情報ツールを起動する、または /nfo オプションか /report オプションを指定して MSINFO32.exe を実行しシステム情報をファイルに保存する

注意 : Office IME 2010 は Microsoft Officeの正規ライセンス(Office XP, Office 2003, Office 2007) を持っていればダウンロードして利用できるので、Office XP や Office 2003 を利用している場合でもこのエラーが発生する可能性がある。

この問題は Windows 7 に含まれている MSINFO32.exe (システム情報ツール) のバグである事が次のサポート技術情報に書かれている。

エラーになったり情報がファイル化できず困るという場合は、サポート技術情報に書かれているように次のいずれかの方法で回避できる。

  • 修正プログラムを入手してインストールする
  • IME を Windows 付属の物に変更する

修正プログラムを入手する手順は以下の通り。

  1. 技術情報のページ上左にある [この技術情報に対応する修正プログラムのダウンロードのリスト] をクリックする
  2. 使用許諾契約書が表示されたら [同意する] をクリックする
  3. [修正プログラムのダウンロード] のページが表示されるので、ページ内の指示の通り必要な修正プログラムにチェックを入れ、メールアドレスを記入し、CAPTCHA に答えて [リクエストを送信する] をクリックする
  4. しばらくすると記入したメールアドレスに修正プログラムのダウンロード方法を記載したメールが届くので、その内容に従ってダウンロードする

IME を Windows 付属の物に変更する手順は以下のサポート技術情報に紹介されている。

日本語入力システムを Microsoft IME に切り替える方法
http://support.microsoft.com/kb/932104/ja

なお修正プログラムは近く公開される予定の Windows 7 Service Pack 1 に含まれる予定だ。

インストールされているアプリケーションを調べる

さて、MSINFO32 を使って管理したいコンピュータの情報を収集する事はできたとしよう。

今度はそれぞれのコンピュータにどんなソフトウェア/アプリケーションがインストールされているのか、きっと知りたくなるだろう。単に興味があるというだけでなく、購入した正規のライセンス数以上にインストールしているアプリケーションは無いか、違法にコピーされたソフトウェアがインストールされていないか、さらには情報漏洩の危険が強い WinnyShare のような P2P ソフトウェアがインストールされていないか、確認したいというのは特に IT 管理者としては当然の事だ。
しかし前にも書いたようにコンピュータで実行可能な状態になっているアプリケーションを全て把握するのは、実は結構難しい。ソフトウェアが起動中ならシステム情報の [ソフトウェア環境] のカテゴリで [実行中のタスク] や [読み込まれているモジュール] をチェックして、どのようなソフトウェアが動作しているのか確認する事はできる。だがシステム情報を採取したタイミングで起動していないソフトウェアについては把握できない。
そこでよく利用される方法としては、[コントロール パネル] の [プログラムのアンインストール] (Windows XP なら [プログラムの追加と削除]) で表示されている項目を確認するという手がある。しかしこの方法にも問題がある。このコントロール パネルは以下のレジストリ キーに作られたアプリケーションごとのキーの値を基に表示している。

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall

ここに書かれているアプリケーションごとのキーは、それぞれのアプリケーションのインストール時に、アプリケーションのインストーラーが作成する事になっている。つまりここにキーが書かれているかどうかはアプリケーション次第であり、インストールされているアプリケーションの全てがここにキーを作成しているとは限らないという事だ。
具体的に言えば、実行ファイル一つだけで動作するようなソフトウェアなら実行ファイルを任意のフォルダーにコピーするだけでインストール完了するので、このレジストリを作成しない場合がほとんどだろう。何個かのファイルを同じフォルダに置けばそれで動作可能といったソフトウェアの場合も同様だ。

そうしたソフトウェアの有無を調べようと思ったら、コンピュータのハードディスク全体をチェックして、全ての実行ファイルをリストアップし、各実行ファイルが何と言うソフトウェアなのかを確認するしか確実な方法は無い。しかしこれが容易ではない事はすぐに予想できるだろう。
有償のシステム管理ソフト、アセット マネジメント ソフトの中には実際にこういうチェックを行い、予め登録してあるパターンと照らし合わせてどのようなソフトウェアが存在しているのか報告してくれる物もある。言い方は悪いが「お金次第」という事だ。
ただし、そこまで完璧を求めないがある程度のチェックはしておきたい…という事なら無償のツールでもある程度の事はできる。

まず Microsoft から以下のようなツールが公開されている。

これらのツールはその名称からもわかるように本来 Microsoft のサポート担当者が、サポート リクエストをしてきた顧客の環境情報を収集するために、顧客に実行してもらうためのツールだ。とは言え誰でもダウンロードして利用できるので、こういう物もある事を覚えてえいて損は無い。またこれらのツールは本来の用途がトラブル サポート用であることから、社内/組織内のサポートやトラブルシュートの際にも有用だ。
ツールの使い方については以下に良い記事があったので、そちらを参照していただきたい。

またこのツールで収集された情報を整理して表示してくれるピュアーも提供されている。

いわゆる「フリー ソフト」の類としては、以下のようなツールが利用できる。使い方などはそれぞれのツールの Web サイトを参照して欲しい。

こうしてコンピュータにインストールされているソフトウェアを調べる事は可能なのだが、どれだけ調べてもそれでユーザーが利用できる (起動できる) 全てのソフトウェアを把握し管理できる訳ではない。例えばユーザーが USB メモリから起動できるプログラムを用意する方法や、インターネットからダウンロードしたソフトウェアをその場で実行する方法であれば、事前にいくら調査していてもそれを把握する事はできない。
そういう意味で、「どんなソフトウェアがインストールされているのか」について極端に神経質になって完璧を求める事にはあまり意味は無い。問題のあるソフトウェアの利用を抑制/抑止したいのなら、プログラムの実行自体を制御するソリューションを取り入れるべきだろう。こうしたソリューションについてはいずれ改めて紹介したい。

[システム情報] を使って効率的に情報を収集する

前回までの記事で [システム情報] を利用して組織にあるコンピューター (のハードウェア、ソフトウェア、ネットワーク) についての情報を収集できる事を説明したが、今回はその具体的な手順について説明する。

前回説明のように [システム情報] ツールは [スタート] メニューや [ファイル名を指定して実行] から起動できる。画面にそのコンピューターの情報が表示されるのだが、表示される情報はまとめてファイルに保存できるようになっており、ファイルは二つの保存式が選べる。保存形式の一番目はシステム情報ファイル形式という、拡張子が .nfo のシステム情報ツールに固有のファイル形式 (と言っても実際は XML 形式のデータ) で、もう一つはテキスト形式だ。

.nfo 形式のメリットは保存したファイルを [システム情報] ツールで開く事ができる点で、別のコンピューターで保存したファイルを開く事もできる。この場合情報はカテゴリごとにツリーで分類されて表示できるので、特定の項目を探しやすい。
対してテキスト形式の場合は、汎用のデータ形式なので加工しやすく、他のソフトウェアにデータを移行しやすい点だ。テキストはタブ区切りになっているので例えば Excel に読み込んで、必要な所だけ表形式を整えて印刷する事もできる。
どちらの形式を使うのかはその後の利用・管理・整理の方法によって一長一短だが、どうせなら同時に両方の形式で保存しておく事も考慮してよいだろう。

それぞれの形式で保存する操作は以下の通りだ。

システム情報ファイル形式

  1. システム情報を起動する
  2. [ファイル] – [上書き保存] を選択する
  3. [名前を付けて保存] ダイアログで、適当な名前を付け適切な場所に保存する

テキスト形式

  1. システム情報を起動する
  2. [ファイル] – [エクスポート] を選択する
  3. [ファイルのエキスポート] ダイアログで、適当な名前を付け適切な場所に保存する

さてこの方法だといちいちユーザー インターフェイスを使って操作しなければならず、また保存場所を手動で選択、ファイル名も手入力しないといけないので面倒だし、誤操作などを考えるとエンド ユーザーにやってもらうのは難しい。そこで情報を収集して特定の名前で特定の場所に保存する動作をできるだけ自動化する方法を紹介しよう。
[システム情報] ツールにはユーザー インターフェイスを表示せず、情報を収集してファイルに保存する起動オプションがある。これでシステム情報ファイル形式でもテキスト形式でも自動的にファイルとして保存する事ができる。
起動スイッチは次のように指定できる。

msinfo32.exe /nfo pathfilename.nfo    (システム情報ファイル形式の場合)
msinfo32.exe /report pathfilename.txt    (テキスト形式の場合)
※ いずれも path は保存するフォルダのパス、filename は保存するファイル名

参考情報
システム情報 (MSINFO32) の各種スイッチの使い方
http://support.microsoft.com/kb/300887/ja

ファイル名は情報を収集したコンピューターのコンピューター名にしておくと後で分かりやすいのだが、そのためには環境変数 COMPUTERNAME を利用すると便利だ (コマンドに %COMPUTERNAME% と書いておくと、コンピューター名に置き換えられて実行される)。また保存する場所は情報を収集する各コンピューターから利用できるネットワーク上の共有フォルダーにすると良いだろう。
例えば SERVER という名前のコンピューターに SHARE という共有フォルダーがある場合、コンピューター名 TEST のコンピューターで以下のように実行すれば SHARE フォルダに TEST.nfo または TEST.txt という名前で収集した情報が保存される。

msinfo32.exe /nfo SERVERSHARE%COMPUTERNAME%.nfo
msinfo32.exe /report SERVERSHARE%COMPUTERNAME%.txt

利用している環境に併せて保存する共有フォルダのパス名を変えて、実際に [ファイル名を指定して実行] でこれらのコマンドを実行し、情報が保存できる事を確認して欲しい。

さてこのコマンドをさらに簡単に実行するにはバッチファイルにすれば良いのだが、その場合は一つ注意する事がある。[スタート] メニューにショートカットがあるシステム情報ツールの実行ファイル (msinfo32.exe) は Windows XP の場合パスが通っていない場所にあるので、バッチファイルにコマンドとして msinfo32.exe だけ書いても起動できないのだ。バッチファイルやコマンド プロンプトからシステム情報を起動するには、以下のようにフルパスを付けてコマンドを記述しないといけない。

"%ProgramFiles%Common FilesMicrosoft SharedMSInfomsinfo32.exe"

また Windows Vista / Windows 7 の [スタート] メニューのシステム情報のショートカットは Windows XP とは異なる場所の msinfo32.exe を起動する。これに併せてパッチファイルのコマンドも XP の場合とは変えないといけない。

これらを踏まえて簡単なパッチ ファイルを書くと、以下のようになる。

———- (ここから) ———-
@if "%ALLUSERSPROFILE%"=="C:ProgramData" "%ProgramFiles%Common FilesMicrosoft SharedMSInfomsinfo32.exe" /nfo SERVERSHARE%COMPUTERNAME%.nfo
@if "%ALLUSERSPROFILE%"=="C:Documents and SettingsAll Users" %SystemRoot%system32msinfo32.exe /nfo SERVERSHARE%COMPUTERNAME%.nfo
———- (ここまで) ———-

※ Windows XP と Windows Vista/Windows 7 の区別には、環境変数 ALLUSERSPROFILE の内容の違いを利用している。

このバッチファイルを各コンピューターでダブルクリックして実行すれば、それだけでサーバー上の共有フォルダーに各コンピュータ名のついたファイルが作成される。

情報収集についてはまだ書きたい事があるので、もう一回続ける。

[システム情報] の限界

今回は前回の記事で紹介した [システム情報] ツール (msinfo32) について、制限や注意事項を説明する。
システム情報は便利なツールだが万能ではないのでその点について注意しておこう。

まずこのツールでは、ツールを実行したタイミングで実行中のプログラムの情報は収集できるが、インストールされているだけで実行されていないソフトウェアの情報は収集できない
[スタート] メニューにあるプログラムのグループは調べて表示してくれる ([ソフトウェア環境] – [プログラムのグループ]) ので、インストール時にスタート メニューにグループを作るソフトウェアは分かる場合もあるが、そうでないソフトウェアについては分からない。
もっともそのコンピューターで実行可能なようにインストールされているソフトウェアをすべて調査するというのは (別の記事で説明する予定だが) 本当に難しい事なので、この点で完璧を期したいという人は相当に苦労することになる。

次に、このツールは一応リモート コンピューターに対する情報の収集も可能に作られている。[システム情報] の [表示] – [リモート コンピュータ] を開くと、図のようなダイアログが表示され、[ネットワーク上のリモート コンピューター] を選択してその下のボックスに "\COMPUTERNAME" の形式 (UNC 形式) で接続したいコンビュー名を入力し、[OK] をクリックすれば、そのコンピューターのシステム情報が表示される仕様になっている。

remote_server

しかし接続先のコンピューターにセキュリティー上の理由でリモートからの管理 (情報の取得を含む) を無効資する設定かされている場合が少なくない。ファイアウォールで接続がブロックされる場合もあるし、接続先で情報を実際に収集するためのプログラムがリモートからの起動を禁止されている場合もある。そのため結構な確率で以下のようなエラー メッセージに出くわすことになる。

computer name への接続を確立できませんでした。ネットワーク パスが正しいか、WMI (Windows Management Instrumentation) にアクセスするのに十分なアクセス許可があるか、WMI (Windows Management Instrumentation) がコンピュータにインストールされているか確認してください。

この問題については以下のようなサポート技術情報も公開されているが、実際に何が問題でどのようにすればリモート接続ができるようになるのか、その調査も手間がかかるし、結局リモート接続したいコンピューターを直接操作する事が必要になる。それならそのコンピューターで直接 [システム情報] を実行した方が早い。
そういう訳でこのツールを使って情報を収集するのなら、各コンピューターで直接実行し、その結果をまとめるのが現実的だろう。

Windows XP SP2 の WMI に関する問題のトラブルシューティング方法
http://support.microsoft.com/kb/875605/ja

次回は実際にこのツールを使って情報を効率的に収集する方法について説明する。

コンピューターの情報を整理する (2)

前回の記事で、あなたがサポートや IT サービスの提供を担当する組織にあるコンピューター (のハードウェア、ソフトウェア、ネットワーク) についての情報を収集し整理し、台帳のような一覧性のある形にまとめておく事の重要性を説明したが、それでは具体的にどのような方法で情報を収集し、メンテナンスするのか。今回はそれについて説明していきたい。

最初に残念な話。あなたがもしコンピューターについて常に最新で細大漏らさぬ詳細な情報を、自動的に収集管理できないかと考えているならこの記事は読むに値しないかもしれない。確かにそうした収集・管理が可能だと謳っているシステムは存在するし、実際にそうしたシステムはかなりな能力を持っている。しかし残念なことに (特に Windows ベースのシステムでは) そのようなシステムは有償かつかなり高価であり、また製品ごとにできる事やその方法、運用形態に特徴がある。もしそうした製品を望むのなら、この記事を読むよりベンダーの営業に話を聞いて見積もりを作らせた方が早いだろう。
とは言えこの記事が全然役に立たないのは悔しいので、有名な製品へのリンクを記事の最後にまとめておいたので、参照していただければと思う。

さてそういう訳で、ここではまず予算もない、高度なスキルも (今のところは) ない担当者であるあなたが、どうすれば最低限必要な情報を、できるだけ簡単で予算のかからない方法で収集できるのか、という事について説明したい。
まず考えられることとして、コンピューター (ハードウェア) の機種・形式・仕様を調べるために、実際にそのコンピュータが使われている場所まで行って、銘板を見て機種形式を確認し、さらに筐体を開いて増設メモリや内蔵機器の有無を調べるという方法がある。もちろんオフィスのデスクの下を這いずり回るのが大好きであればこれを止める気はしないし、そうでなくとも最悪他の手段が取れない場合はそうする事を覚悟しなければならない事もあるだろう。だが大抵の人は (あなたも、そして私も) そんな事はできればやりたくない。
そこで次に考えるのは、何かのソフトウェア ツールでそうした情報を表示してくれるものがないか、という事だ。幸いにして、Windows にはそうした機能を持っているツールが標準で付属している。情報収集の手始めとしては、このツールを使ってみるのがよいだろう。

Windows に標準で付属しているツールは「システム情報」という名前で、ちゃんと [スタート] メニューにも登録されている。

[スタート] -> [プログラム] -> [アクセサリ] -> [システム ツール] -> [システム情報]

もっと簡単に呼び出すなら、Windows Vista 以降の Windows (Windows 7 / Windows Server 2008 など) なら [スタート] メニューの [プログラムとファイルの検索] ボックスに、Windows XP / Windows Server 2003 / Windows 2000 なら [スタート] メニューから [ファイル名を指定して実行] を開いて [名前] ボックスに、以下のコマンドを入力して Enter を押す

msinfo32

参考情報
Windows XP システム情報 (Msinfo32.exe) ツールについて
http://support.microsoft.com/kb/308549/ja

これで下図のような画面が表示され、ツールを実行したコンピュータについての情報が収集・表示される (下の図では "システム名" (コンピューター名) と "ユーザー名" は消してある)。左側のツリーでカテゴリを選択すれば、それに対応する情報が右側のペインに表示される。コンピューターのメーカーや機種・形式・仕様は [システムの概要] が確認できるだけでなく、このカテゴリでは同時に Windows の名称やバージョン、コンピュータ名も表示されるので、「どんなコンピューターが使われているのか」という基礎的な情報であれば、この [システムの概要] だけでも十分だろう。

msinfo32

実際にどのカテゴリでどんな情報が表示されるのかは実際にあなたのコンピュータで実行してみて確認するのが一番手っ取り早い。ぜひ試してみてほしい。

次回はこのツールを使う際の注意点について説明する。

参考資料 (代表的なインベントリ管理、アセット マネジメント管理ソフトウェア / システム)

コンピューターの情報を整理する (1)

会社内/組織内のヘルプデスクや IT サポートの業務を行う場合、サポートの対象となるコンピューターやソフトウェアには何があるのかを知っておくのは重要だ。
サポート対象となる組織の範囲内で、どのようなコンピューターが使われていて、そのコンピューターではどのようなソフトウェアが利用それているのか調査してまとめておけば、実際のサポートの際に一から情報収集する手間が省けるだけでなく、事前に分かっているコンピューター (ハードウェア) とソフトウェアの環境から問題の原因やその解決方法がある程度絞り込める場合もある。

とは言え実際に稼働している企業 / 組織内環境で、誰がどのような機種・形式・仕様のコンピューターを利用しているのか、またそのコンピューターにはどのようなソフトウェアがインストールされているのかを調査するのは、実は結構面倒な作業である。
もし資産管理が非常に良く行われている企業であれば、会社の資産であるコンピュータについて機種・形式・仕様や現在の利用者が確認できる資料 (資産管理台帳など) が存在するだろうから、ハードウェアについてはそれが利用できるし、ソフトウェアについても会社組織として導入したものであればそのライセンスが資産計上されているだろうから、同じ台帳からわかる場合がある。
しかし現実的に言えば、小規模な企業や事業所でそこまで精緻な管理がされている場合は少なく、ひどい場合は会社として購入したりリースしたりした (そして存在しなければならない) コンピュータが何台なのかも資料が無い場合だってあるだろう。そうなればハードウェアについては実地確認して現況ベースでの情報を得る必要がある。

またソフトウェアについても会社として購入したライセンスならちゃんと台帳に載っているという場合でも、利用者が個人的にインストールした無償利用可能なソフトウェア (フリー ソフトやオープンソース ソフトウェアなど) は把握できない。当然資産管理台帳でソフトウェアは管理していないのなら、これも実地確認して現況ベースでの情報を得る必要がある。
さらにコンピューター以外の IT / ネットワーク機器の把握も必要になる。プリンターやスキャナーなど人が直接操作する機器はまだ「何がどこにあるのか」分かりやすいが、ルーターやハブなど直接操作しない機器はどこに設置されているのかよく分からないという場合もある。またサーバーのようにネットワーク越しの操作しかしない機器の場合、サーバー名と実際の機器の対応関係が不明になる場合もある。サーバー名でアクセスできるのだからどこかでサーバーが稼働している筈だがどこに設置されているのか分からないとか、複数台あるサーバーのどれがどのサーバー名なのか分からない、というケースだ。

こうした「何がどこにあるのか」が分からない状態と、それらが情報として正しく管理されている状態ではヘルプデスクや IT サポートの業務の効率も違ってくる。それだけでなくこうした情報は IT 資産のコスト管理、違法コピーなどの不適切なライセンス利用の防止、さらには情報セキュリティー管理にも重要であり、単にヘルプデスクや IT サポートだけの問題ではない。
一般的にこういう情報に基づくハードウェア / ソフトウェアの IT 資産の管理を「インベントリ管理」あるいは「IT アセット マネージメント」などと呼んで、それを売り物にしたシステムやサービスも大々的に販売されている。そこまで大仕掛けなシステムを作らなくとも、どんなコンピューターがあって、どんなソフトウェアが使われていて、どんなネットワーク構成になっているのか、まとめの情報 (台帳やシステム図) があれば最低限の管理はできる。。

とは言え最初に情報を収集するのは前述のように少し面倒な作業になる場合も少なくない。いちいちコンピュータのある場所まで出向き、機種・形式・仕様を調べ、さらにインストールされているソフトウェアを調べる事になれば、そのコンピュータを使っている人の業務との兼ね合いを考えると作業時間の調整だけでも一苦労するかも知れない。
それでも今後のサポート業務・管理業務の効率化やライセンス管理の適切化、セキュリティーを考えるとぜひやっておくべき作業だし、やり方によっては情報収集をより簡単に行う事も可能だ。

それでは具体的にどのような方法で効率的に情報を収集するのか、またどのように管理するのが良いのか。これについては次に投稿する記事で紹介していきたい。