Windows7でC++にて、PCにTelnetクライアントがインストールされているか確認したいです。
そこで_access_sを使ってみたのですが、どうにも思ったように動いてくれません。
//コード例
void func(void){
cout << _access_s("C:\\Windows\\System32\\telnet.exe",0) <<endl; //←存在しているにもかかわらず、2が返ってきます。
cout << _access_s("D:\\test\\new.txt",0) <<endl; //自分で作成したテキストファイルです。意図した通り0が返ってきます。
}
システムフォルダのアクセス権限の問題なのだろうか・・・とも思ったのですが、解決方法が思いつきませんでした。
解決方法をご存じの方がいらっしゃいましたら、ご教示願います。
よろしくお願いいたします。
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呼び出しでは表示されず。
----------------------------------------------------------------
お役に立てず申し訳ありませんでした。引き続き他の回答者からの回答をお待ちください。
いえいえとんでもございません。再度実験して下さりありがとうございます。私の環境以外でもこのエラー(?)の再現するようなので、telnet.exeが特殊なのでしょうね。引き続き情報を探してみることにします。ありがとうございました。
No.3
- 回答日時:
違うことやってて気付いたのですが
「VirtualStore」
が原因ではないでしょうか
ご回答ありがとうございます。そういえばそんな機能もありましたね!
ただVirtualStore内にtelnet.exeはなく、access関数と共に検索してみましたが有力な情報は得られませんでした。「ならばレジストリの有無をチェックすれば」とも思いましたが、よく考えればそこまでtelnet機能が必要ないなと思いまして、諦めることにしました。しかしVirtualStoreの問題を思い出せたのはよかったです。今後注意しようと思います。ありがとうございました。
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 のディレクトリ
ファイルが見つかりません
----------------------------------------------
ご回答ありがとうございます。再度試してみました。
----------------------------
//コード
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- Chrome(クローム) 【Google】「同期は有効です」と表示されているがブックマークが同期されていない 2 2022/11/17 13:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- プリンタ・スキャナー 「ネットワーク上にプリンタが見つかりませんでした」 5 2023/08/02 20:53
- Access(アクセス) Microsoft Accessをクレジットカード登録無しで試用したい 3 2023/07/20 17:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
LINK : fatal error LNK1104に...
-
Access クエリ実行が急に非常に...
-
C言語で計算したファイルをsma4...
-
Hello,Worldの.exeファイル
-
64bit環境で32bitのodbc参照
-
VC++での外部プログラムの実行
-
VBAでMP3を鳴らしたい
-
WScript.Echo と msgbox
-
jarファイル実行時の環境変数の...
-
exeファイルをすぐに終了させな...
-
Javaで作成したソフトの配布 J...
-
VB6.0で作ったプロジェクトが起...
-
batからexeを実行し戻り値を受...
-
実行時エラー:ファイルがオー...
-
VC++から引数付きexeファイルの...
-
exeファイルを作成できるプログ...
-
VbscriptにてTeraterm マクロを...
-
複数のJarファイルにクラスパス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
JavaScriptでコマンドプ...
-
OLE又はDDEを使うVISUAL BESIC...
-
VC++から引数付きexeファイルの...
-
VBAでEXEファイルを動かす方法...
-
LINK : fatal error LNK1104に...
-
64bit環境で32bitのodbc参照
-
WScript.Echo と msgbox
-
batからexeを実行し戻り値を受...
-
VBAでMP3を鳴らしたい
-
コマンドプロンプトで外のexeや...
-
batからexeを起動した際の戻り...
-
VBS形式ファイル:ダブルクリッ...
-
jarファイル実行時の環境変数の...
-
JAVA .jarファイルに再圧縮する...
-
jarファイルとjava.exeの関連付...
-
VBSでEXCELのXLSTARTにあるマク...
-
コンポーネント`MSCOMM32.cox'...
-
ローカルのHTMLからexeファイル...
-
c/c++ ビルドしたにもかかわら...
おすすめ情報