LoginSignup
6
4

More than 3 years have passed since last update.

c:\windows\system32\telnet.exeがそこにあるのに使えないのはWOW64のせい

Last updated at Posted at 2016-01-17

現象

  • Windows 7 x64
  • コマンドプロンプトからtelnetが使えない
  • コントロールパネルからWindowsの機能を有効にしても使えない
  • でも稀に使えることがある
  • エクスプローラで見てもtelnet.exeはそこにある

数年前からこの微妙な問題に悩んでおり、git付属のmsysとかcygwinなど他の物を使ってお茶を濁していました。

原因

SuperUserに原因を書いている人がいました。64bit版のwindowsで32bit版のcmdを使っているせいなのだそうです。

64bit版のWindowsにはWOW64という仕組みがあります。32bitのDLLを64bitアプリから読み込めないことの対策として、32ビットアプリがc:\windows\system32以下のファイルにアクセスするとc:\windows\SysWoW64にリダイレクトするのだそうです。こちらには32bit版のDLLが用意されています。

問題は、Telnetクライアントを有効にしても32bit版のtelnet.exeはインストールされない、ということです。

「64bit版でなく32bit版のコマンドプロンプトを使いたい」とわざわざ意識して起動する人はいないと思います。いつの間にか32bit版を使っている、という現象もWoW64のせいです。使っているランチャーが32bitだったりする場合、そのランチャーからはc:\windows\system32\cmd.exeを起動しようとするとc:\windows\SysWoW64\cmd.exeがすりかわって起動するのです。

対処法

32bit版のコマンドプロンプトから64bit版のtelnet.exeを起動できないというわけではありません。単にパスが通っていないだけなので、解決方法はこうなります。

  • c:\windows\system32\telnet.exeをパスの通ったところに手でコピーする

もしくは

  • c:\windows\sysnative\telnet.exeを直接起動する

そもそもMicrosoft Telnetがここまで手間を掛けて使うほどの物かというと微妙ですが、もやもやが晴れたのでメモしました。

参考リンク

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4