米MicrosoftはWindows XP Service Pack 2(SP2)の出荷を控え,こちらのようなサイトを用意し,大量の情報を頻繁に公開しています。新しく公開される情報はセキュリティに関するものが多いこともあり,私たちWindowsユーザーは公開される情報に一通り目を通し,概要を把握しておく必要があります。そこで今回は,公開される新しいWindows情報を理解するための基本知識を確認しておくことにします。

変化しないWindowsの基本

 筆者は3年ほど前,こちらの連載を担当し,Windowsの基本を効率的に把握するためのサンプル・プログラムを公開してきました。めまぐるしく技術革新が繰り返されるコンピュータの世界における「3年前」というのは,「はるか昔」という印象を持つと思います。

 しかしその一方で,コンピュータの基本は変わらない,と主張する人々が多数存在することも事実です。私たちはその主張から,「Windowsの基本も変わらない」という結論を導き出せるのでしょうか。このあたりの事情を調べてみましょう。なお,以降の説明文内には,「名前空間」という用語を使っていますから,その意味については,こちらの記事を復習してください。

 まずは,こちらで公開している「No9ListNameSpaces.exe」というプログラムをダウンロードし,「Windows XP SP1」と「Windows Server 2003」の両環境で実行してみます。「3年も前のプログラムだから動作しないのではないか」という疑問を抱く人がいるかもしれません。しかし筆者は,(詳しい技術的な説明は今回は割愛させてもらいますが)そのような不安は一切持ちませんでした。開発していた当時,「このサンプル・プログラムが動作しないような事態はまず発生しない」と考えていました。サンプル・プログラムを実行すると,筆者の環境では,次のような情報が返されます。

(Windows Server 2003環境での実行結果の一部)
相談相手: IShellDispatch4
有効名前空間数: 50
実行エラー情報: No Error!
作成日: 2004/04/13
作成時間: 7:37:02

(「Windows Server XP + SP1」環境での実行結果の一部)
相談相手: IShellDispatch4
有効名前空間数: 51
実行エラー情報: No Error!
作成日: 2004/04/13
作成時間: 8:12:30

 参考のために,3年前の出力結果の一部も紹介しておきます。

(Windows 2000環境での実行結果の一部)
相談相手: IShellDispatch2
有効名前空間数: 42
実行エラー情報: No Error!
作成日: 2001/07/08
作成時間: 9:08:25

(Windows XP環境での実行結果の一部)
相談相手: IShellDispatch4
有効名前空間数: 51
実行エラー情報: No Error!
作成日: 2001/07/08
作成時間: 9:11:21

 ご覧のように,Windows 2000からWindows XPへの移行時には,名前空間数が9個ほど増えていますが,Windows XPから「Windows XP SP1」への移行時にはまったく変化していません。また,「Windows XP SP1」とWindows Sever 2003間の名前空間数の違いは1個となっています。このような事実を整理してみると,次のような結論を導くことができると思います。

Windowsを名前空間レベルで見ると,大きな変化は見当たらない。このため,Windowsの基本は変化していないといってよい

 この結論は実際のデータの変化を基に導き出していますから,客観的に見て,精度は高い,といってよいと思います。しかしその一方で,Windowsの基本は変化しないかもしれませんが,私たちWindowsユーザーにとっては,小さな変化が大きな意味を持っているのが事実です。それでは次に,小さな変化を確認しておきましょう。

小さな変化は大きな意味を持つ

図1●サンプル・プログラムの出力結果をWindiff.exeで比較
図2●サンプル・プログラムの実行結果
 早速ですが,図1[拡大表示]の画面を見ていただきましょう。

 図1の画面は,「No9ListNameSpaces.exe」サンプル・プログラムを「Windows XP SP1」とWindows Sever 2003の両環境で実行し,出力された2つのファイルをWindiff.exeで比較している様子を示しています。なおWindiff.exeは,MicrosoftのPlatform SDKに付属しているプログラムの1つです。

 画面内の四角で囲んである部分をご覧になると分かるように,「管理ツール」名前空間に含まれているオブジェクト数は,2つの環境では2倍以上の差となっています。この場合,Windows Sever 2003の方が多くの管理ツールを持っています。結論を急げば,このオブジェクト数の差は,「Windows XP SP1」はクライアント,Windows Sever 2003はサーバーいう役割の違いを端的に示しているといってよいでしょう。

 今回の記事をここまで読んで来た人の中には,「管理ツール」名前空間に含まれているオブジェクトとはいったいなんだろう? と興味を示す人が出てくると思います。そこでオブジェクト情報を取り出すツール「No21.vbs」を用意してみました。お時間のある方は,こちらからダウンロードし,確認してみてください。このツールを実行すると,例えば図2[拡大表示]のような情報が返されます。

 図2の画面は,「管理ツール」名前空間内のオブジェクトの実体を示しています。画面から分かるように,オブジェクトの実体は,ショートカットです。いくつかのショートカットをクリックしてみるとわかりますが,3年前と異なり,XMLファイルへのショートカットが増えています。このようなところには,時代の流れ(つまり,XML標準仕様の取り込み)を感じることができます。

プログラムの動作と使い方

 最後に,今回紹介したツール「No21.vbs」の動作と使い方を説明しておきます。このツールは,筆者がこれまで担当した連載で触れた技術を応用しているにすぎません。実際,ツール「No21.vbs」は以前に公開したコードのほんの一部を変更しているだけです。

目的の名前空間内のオブジェクト情報を収集したい場合には,次のソースコード行のNameSpace部の数値を変更するだけです。

Set instFolder = CreateObject("Shell.Application").NameSpace(47).Items

 NameSpace部に指定できる数値は,「No9ListNameSpaces.exe」サンプル・プログラムの出力情報内に含まれています。数値を指定される場合には,0と37は避けた方がよいでしょう。問題が出るというわけではありませんが,例えば,数値の37は「System32」名前空間を指しています。ご承知のように,この名前空間には数千のオブジェクトが含まれています。つまり,ツールの実行が終了するまでは膨大な時間がかかります。筆者は,0と37の数値をNameSpace部に指定することをお勧めしません。

 ツール「No21.vbs」は,次のようなコードを使って,独自のフォルダを作成しています。

Function WrapperCreateFolder()
On Error Resume Next
Dim oHelper,oFolder,strFolder
 strFolder = "c:\ITProToyota"
 Set oHelper = CreateObject("Scripting.FileSystemObject")
 
 If oHelper.FolderExists(strFolder) Then
  strFolder = strFolder & second(time)
 End If

 Set oFolder = oHelper.CreateFolder(strFolder)
 If ucase(oFolder.Path) = ucase(strFolder) Then
  strBasePath = strFolder & "\"
  WrapperCreateFolder = True
 Else
  WrapperCreateFolder = False
 End If
End Function

 最初に実行すると,「c:\ITProToyota」というフォルダが作成され,そのフォルダ内にHTMLファイルが作成されます。2回目に実行すると,「c:\ITProToyotaXX」という名称を持つフォルダが作成されるはずです。XXには実行時点での「秒数」が入ります。例えば,12時35分40秒にツールを実行した場合,「c:\ITProToyota40」というフォルダが作成され,その内部にHTMLファイルが作成されるはずです。腕に覚えのある方は,ソースコードを検討され,自由に改善してみるとよいでしょう。結構面白情報が返されますから,ぜひ挑戦してみてください。

 SP2インストールの前後に実行しておき,返される結果を比較すれば,SP2の概要は意外と効率的に理解できてしまうかもしれません。現在SP2のRC1が公開されていますが,本連載では,リリース候補番号がもう少し上がった段階で今回のツールを実行し,その結果を報告する予定です。

今回のまとめ

  • Windowsの名前空間の基本構成はほとんど変更されていない
  • 各名前空間に含まれるオブジェクト数は変化している

 今回は以上で終了です。次回またお会いいたしましょう。ごきげんよう!