VB6からFTPを使用してファイルを送信したのですが、
パーミッション変更の仕方が分からず困っています。
いろんなところの過去ログやらを見て、FtpCommandを使用して
quote site chmod 777 ファイル名
をやれば良さそうだというところまで解ったのですが、
何せVB6なもんでFtpCommandの使用方法まで解りませんでした。
まず下記のように定義しました。
Public Declare Function FtpCommand Lib "wininet.dll" Alias "FtpCommandA" _
(ByVal hFtpSession As Long, _
ByVal fExpectResponse As Boolean, _
ByVal dwFlags As Long, _
ByVal lpszCommand As String, _
ByVal lContext As Long, _
phFtpCommand As Long) As Boolean
その後、FtpCommandの実行はこのようにしています。
lngRtn = FtpCommand(hConnection, 1, FTP_TRANSFER_TYPE_ASCII, strCmd, 0, hResponse)
パラメータで渡すコマンド文字列を下記のようにしました。
strCmd = "quote site chmod 777 temp.txt"
この場合は戻り値が0で、パーミッションも変更されませんでした。
(あっという間にlngRtnに0が入ってきました)
そこで、QUOTEを省略してみました。
strCmd = "site chmod 777 temp.txt"
すると戻り値が0でしたが、パーミッションは変更されました。
(やたら時間が掛かりました)
しかし、戻り値が0だと正常終了なのか、エラー終了なのか判断できない気がします。
判定の仕方が間違っているとか、定義が違う、パラメータが違う等、
どなたか何かご存知であればご教授願いたいと思います。
長文ですいませんでした。
環境:WinXP, Win2008Svr R2
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
この回答への補足
todo36さま。
早速のレスありがとうございます。
回答に対しての確認をさせてください。
【確認1】
> InternetGetLastResponseInfoでFTPレスポンスを見る
ということはFtpCommandの戻り値は関係ないってことでしょうか?
【確認2】
とりあえずInternetGetLastResponseInfoを入れて、
FtpCommandを実行してみました。
下記の場合は
strCmd = "quote site chmod 777 temp.txt"
lRtn = FtpCommand(hConnection, 1, FTP_TRANSFER_TYPE_ASCII, sCmd, 0, hResponse)
「Error 0: 200 Type set to A
200 PORT command successful
500 QUOTE not understood」
となっていました。
コマンドプロンプトでFTP接続してHELPを見たら
ftp> help
quoteがありました。
ftp> quote help
SITEがありました。
ftp> quote site help
CHMODがありました。
全て*は付いていないので使用できるコマンドだと思います。
エラーの内容はQUOTEコマンドなんて知らないって言われているのでしょうが、
ヘルプで見ると実行できそうです。
FtpCommandからQUOTE SITE CHMODはできないのでしょうか?
【確認3】
そこで下記のようにQUOTEを外して実行したところ
strCmd = "site chmod 777 temp.txt"
lRtn = FtpCommand(hConnection, 1, FTP_TRANSFER_TYPE_ASCII, sCmd, 0, hResponse)
「Error 0: 200 Type set to A
200 PORT command successful
200 SITE CHMOD command successful」
となっていました。
ただし、下記のFtpCommandの実行は5分くらい帰ってきませんでした。
FtpCommandが成功した場合はそんなに時間がかかるのでしょうか?
「200 SITE CHMOD command successful」があれば成功と判断して宜しいのでしょうか?
お忙しいところ申し訳ありませんが、
何卒宜しくお願いします。
長文ですいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行属性って?
-
FTPにて553エラー
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
ラジオボタンのグループ化
-
VBScriptで、ファイルから任意...
-
CGIプログラミングで書かれたサ...
-
VBAでサーバーにアクセスするに...
-
イントラネットのwebページのア...
-
イントラネットにカウンター設置
-
古ーくからフリーのtree.cgi掲...
-
ASPから既存のexcelブックを開...
-
ホームページ上でvlookup関数の...
-
sendmailの-fオプション記述
-
WEBデザイナーの方にお聞きした...
-
CGIが壊れるて?
-
.htaccessを2つ以上設置した場合
-
特定CGI「だけ」が、ローカル環...
-
これを実行するとエラーが起こ...
-
ファイルダウンロード後に、デ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPにて553エラー
-
ftpでuploadのとき上書きとする...
-
VB6でレジストリファイルをイン...
-
アクセスカウンタの設置方法
-
Dreamweaverでのパーミッション...
-
サポート終了している掲示板CGI...
-
掲示板のCGIを設置したいのです...
-
実行属性って?
-
CGIのプログラムについて
-
メールフォームCGIの設置について
-
jcode.plファイルが閲覧できる...
-
cgiからファイルの書き込みがで...
-
自宅サーバでのCGI関係エラーに...
-
問い合わせメールフォームの不具合
-
4択問題のプログラムが導入でき...
-
CGIのデバッグについて
-
cgiのメールフォムでメール送信...
-
403エラーが出ます。
-
ファイルロックの質問
-
datファイルを生成したい
おすすめ情報