• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Telnetクライアントが存在するか確認したい)

Windows7でTelnetクライアントの存在を確認する方法

このQ&Aのポイント
  • Windows7でC++にて、PCにTelnetクライアントがインストールされているか確認したいです。_access_s関数を使用しているが、正常に動作しない問題が発生しています。
  • システムフォルダのアクセス権限の問題が原因である可能性がありますが、解決策が見つかりません。解決方法を知っている方は教えてください。
  • Telnetクライアントが存在するかどうかを確認するためには、_access_s関数を使用することができますが、Windows7での正しい使い方がわかりません。解決策をお知りの方はお知らせください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

#1です。 当方でもtelnet.exeをwindows7にインストールし、テストプログラムを実行してみました。 結果は質問者様と同様でした。(_access_sでは認識しないが、dirコマンドでは表示される) 従って、telnet.exeのみ特殊な仕掛けが施されていると思われます。 しかしながら、プログラムからtelnet.exeを認識する方法はわかりませんでした。 当方で、更に以下の内容を試みましたが、何れもtelnet.exeを認識出来ませんでした。 1.stat関数で、存在を確認。=>認識しない。 2.system関数で"dir c:\\windows\\system32\\telnet.exe"を実行 ファイルが存在しない ・・・・と表示される。 コマンドプロンプトでの直打ちでは、表示されるが、system関数からのdir呼び出しでは表示されず。 3.system関数で"where telnet.exe"を実行 与えられたパターンのファイルが見つかりませんでした。・・・が表示される。 コマンドプロンプトでの直打ちでは、表示されるが、system関数からのwhere呼び出しでは表示されず。 ---------------------------------------------------------------- お役に立てず申し訳ありませんでした。引き続き他の回答者からの回答をお待ちください。

Mods-Rockers
質問者

お礼

いえいえとんでもございません。再度実験して下さりありがとうございます。私の環境以外でもこのエラー(?)の再現するようなので、telnet.exeが特殊なのでしょうね。引き続き情報を探してみることにします。ありがとうございました。

Mods-Rockers
質問者

補足

再度複数の方法で検証して下さったこちらのご回答をBAとさせていただきます。お二方ともありがとうございました。勉強になりました。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

違うことやってて気付いたのですが 「VirtualStore」 が原因ではないでしょうか

Mods-Rockers
質問者

お礼

ご回答ありがとうございます。そういえばそんな機能もありましたね! ただVirtualStore内にtelnet.exeはなく、access関数と共に検索してみましたが有力な情報は得られませんでした。「ならばレジストリの有無をチェックすれば」とも思いましたが、よく考えればそこまでtelnet機能が必要ないなと思いまして、諦めることにしました。しかしVirtualStoreの問題を思い出せたのはよかったです。今後注意しようと思います。ありがとうございました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

本当にc:\windows\system32内にtelnet.exeが存在しますか。 当方で、実行したところ、存在するexeについては、0が返ります。 以下ソースコードと実行結果です。 ---------------------------- cout << _access_s("C:\\Windows\\System32\\telnet.exe",0) <<endl; cout << _access_s("C:\\Windows\\System32\\ftp.exe",0) <<endl; ----------------------------- 実行結果 2 0 ----------------------------- 当方の環境では、 telnet.exeは存在しない ftp.exeは存在する 状態で実行しています。 ------------------------------ C:\Windows\System32>dir ftp.exe ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 05C2-7500 です C:\Windows\System32 のディレクトリ 2010/11/20 21:17 42,496 ftp.exe 1 個のファイル 42,496 バイト 0 個のディレクトリ 824,174,346,240 バイトの空き領域 C:\Windows\System32>dir telnet.exe ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 05C2-7500 です C:\Windows\System32 のディレクトリ ファイルが見つかりません ----------------------------------------------

Mods-Rockers
質問者

お礼

ご回答ありがとうございます。再度試してみました。 ---------------------------- //コード cout << _access_s("C:\\Windows\\System32\\telnet.exe",0) <<endl; cout << _access_s("C:\\Windows\\System32\\ftp.exe",0) <<endl; ---------------------------- //実行結果 2 0 ---------------------------- //cmd dir C:\Windows\System32>dir telnet.exe C:\Windows\System32 のディレクトリ 2009/07/14 10:39 79,872 telnet.exe 1 個のファイル 79,872 バイト 0 個のディレクトリ 77,227,819,008 バイトの空き領域 C:\Windows\System32>dir ftp.exe C:\Windows\System32 のディレクトリ 2010/11/20 05:24 48,128 ftp.exe 1 個のファイル 48,128 バイト 0 個のディレクトリ 77,227,819,008 バイトの空き領域 ---------------------------- こうなりました。telnet.exeもftp.exeも同様に「読み取りと実行」に許可がなされているのですが、ますますわからなくなってしまいました・・・

関連するQ&A