Windows Vista x64 での telnet コマンド

Vista のデフォルトでは telnet 関係は無効化されているので、[コントロールパネル] - [プログラムと機能] -「Windows の機能の有効化または無効化」-「Telnet クライアント」で有効化する必要がある。

で有効化したんだけどコマンドプロンプトtelnet と打ち込むとエラーになったもんだから考え込んでしまった。

'telnet' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

結論を書いてしまえばこんな具合だった。

  1. telnet.exe が x64 のみしか提供されず、%systemroot%\system32 に存在している。
  2. cmd.exe*1x86, x64 の両方が提供されている。
  3. x86のアプリケーションは %systemroot%\system32 の代わりに %systemroot%\SysWOW64 を読みに行く。
  4. x86のアプリケーションから cmd.exe を起動していたので cmd.exe が x86 になる。
  5. cmd.exe が x86 なので %systemroot%\SysWOW64 を読みに行ってしまい telnet.exe が見つからない。

気が付いてしまえば、簡単な事ではあったんだけどなかなか気が付かなかった。

その後は x86 のアプリケーションから x64 cmd.exe を起動させる方法を考えたのだけど、スマートに済ませられる方法が思いつかなかったので cmd.exe を起動するだけの x64 プログラムを書いて済ませた。x86 版も提供してくれれば良いのに。