Win10複数NICのHidemarnet ExplorerについNo.09751
jechabon さん 18/09/10 12:34
 
Win10複数NICのHidemarnet Explorerについて

Hidemarnet Explorer(32bit版)をWindows7で使用していたのですが、
Windows10に移行したら動作しませんでした。
(with FTPS版はディレクトリ一覧を解釈しないので使えません)

32bit版をWindows10に対応していただくか、with FTPS版のディレクトリ一覧の
解釈を32bit版と同じにしていただく必要があると思いますが可能でしょうか?


動作環境
 OS: Windows 10 Pro (build 1803)
 秀丸: 8.83(32bit) + Hidemarnet Explorer 4.20 (with FTPSでない旧版)
 ftpサーバー: microware OS-9000
 ネットワーク: 複数のネットワークセグメント(仮想PC含む)が存在


症状
・複数NIC環境だとftpサーバーと異なるネットワークアドレスにPORTコマンドが
 発行されれてNLSTコマンドによるディレクトリ一覧の取得に失敗する。
 ipconfigで最後に表示される有効なNICのネットワークアドレスにPORTコマンド
 が発行されてしまうようです。(SOCKFTP.LOGで確認)


その他
・有効なNICを1つ(他のNICをすべて無効)にすると動作する。
・ftpサーバーはPASVモード未対応なので回避できない。
・with FTPS版では正しいネットワークアドレスにPORTコマンドが発行され、
 ftpサーバーからディレクトリ一覧が返送(LANアナライザで確認)されているが、
 ディレクトリ一覧の解釈が32bit版と違うようでファイル一覧が表示されない。

[ ]
RE:09751 Win10複数NICのHidemarnet ExploNo.09752
秀まるお さん 18/09/10 14:32
 
 お手数かけてすみません。

 Hidemarnet Explorer(旧VisualBasic版) / Hidemarnet Explorer with FTPS(.N
ET Framework版)

 について調べてみました。

 まず、旧VisualBasic版の方は、FTP関係の処理は、wininet.dllというWindowsに標
準で付いてるライブラリのFTP関係のAPIを呼び出して実現してました。例えばファイ
ル一覧の取得はFtpFindFirstFile / FtpFindNextFileってAPIを呼び出して実現して
ました。

 .NET Framework版の方は、TKFP.dllっていうフリーソフトのライブラリを呼び出し
て実現してまして、例えばファイル一覧の取得はTKFP.IO.FileInfoっていうの(クラ
ス?)を使ってました。

 で、対応するとしたらですが・・・・

■VisualBasic版について

>  ipconfigで最後に表示される有効なNICのネットワークアドレスにPORTコマンド
>  が発行されてしまうようです。(SOCKFTP.LOGで確認)

 PORTコマンドの発行などの処理は、すみませんが自前の処理の中には存在しなくて、
wininet.dllの方で処理されてるんだと思います。それの処理をコントロールする何
かパラメータのような物があるのかもしれませんが・・・。無さそうな気がします。

 何かパラメータがあるとしたら、InternetConnectっていうAPI呼び出し時のパラ
メータくらいしか無いような気がします。ざっと見た限りは、ちょっと適当なパラ
メータが無いです。

 https://docs.microsoft.com/en-us/windows/desktop/api/wininet/nf-wininet-internetconnecta

 ってことで、こっちの方での解決はちょっと無理そうな気がします。

■.NET Framework版について

 こちらはTKFP.dlを使ってまして・・・(http://uwa.potetihouse.com/library/tkfpdll.htm
l)

> (with FTPS版はディレクトリ一覧を解釈しないので使えません)

 ディレクトリ一覧を解釈するような処理は自前ではやってなくて、ライブラリまか
せになってしまってまして・・・、何か対処するとしたら、

 − TKFP.dll呼び出しのパラメータを何かいじる。
 − TKFP.dllの新しいバージョンがあればそれに入れ替える

 くらいしか対処策が考えられないですけど、特にこれといった呼び出しパラメータ
も無さそうで、バージョンも最新というか、2012年から何も更新されてないようです。

 ということで、ちょっとこっちの解決策も無理そうです。

 TKFP.dllを使わない別の方法を使うのは、大変な修正労力が必要なので、現実的に
は難しいです。

 ということで、すみませんが解決策無さそうです。

 現実的に今できることは、とりあえず「FTP処理用のライブラリの都合上、うまく
いかないFTPサーバーもあります」みたいに宣言させていただくことしか無さそうな
気がします。

 ユーザー様でなんとかするとしたら、Windows10 Professionalの場合なら、Hyper-
Vを使って仮想OSを動かして、そこでHidemarnet Explorerを動かす作戦にすれば、NI
C1枚相当で動作は可能かと思いますけども、そういうのでどうでしょうか。

[ ]
RE:09752 Win10複数NICのHidemarnet ExploNo.09753
jechabon さん 18/09/10 16:34
 
> ということで、すみませんが解決策無さそうです。

そうですか。残念です。
現実的にはTKFP.dllの作者様に対応をお願いするのが良さそうですね。

ディレクり一覧の取得は、ffftpが非常に多くのサーバーに対応しており、現在では
オープンソース化されていますので、そのソースを参考にディレクトリ一覧の取得部

だけでも対応していただけるとHidemarnet Explorerのユーザーも増えるのではない
かと
思っていますが、かなり大変ですよね...
実はffftpも以前動作しなかったので作者様に対応して頂きました。


> ユーザー様でなんとかするとしたら、Windows10 Professionalの場合なら、
> Hyper-Vを使って仮想OSを動かして、そこでHidemarnet Explorerを動かす作戦にす
れば、
> NIC1枚相当で動作は可能かと思いますけども、そういうのでどうでしょうか。

古いOSでの開発は仮想PC(VirtualBox)で作業しているので問題ないですが、
ネイティブ環境で開発している時に、軽微なサーバー設定の変更で使用しています。
そのため、わざわざ仮想環境を立ち上げる作戦はあまりメリットがありません。
それであれば一時的に他のNICを無効化した方が簡単です。
ちなみにHyper-VはVirtualBoxやVMwareと共存できないです。

[ ]
RE:09753 Win10複数NICのHidemarnet ExploNo.09754
秀まるお さん 18/09/10 17:19
 
 一応、TKFP.dllの作者さんのサポート掲示板はあるようです。

    http://uwa.potetihouse.com/bbs/patio.cgi

 そこに書き込んでいただけると、もしかしたら対応してくれるかもしれませんが、
最終更新が2012年で、完全なフリーソフトで、しかも.NET Frameworkの2.0用なので、
今から直してくれるかどうか、かなり難しいそうな気はします。

 掲示板の発言についてもコメント付いてないのが多いようだし。

> ディレクり一覧の取得は、ffftpが非常に多くのサーバーに対応しており、現在では
> オープンソース化されていますので、そのソースを参考にディレクトリ一覧の取得部
> 分
> だけでも対応していただけるとHidemarnet Explorerのユーザーも増えるのではない
> かと
> 思っていますが、かなり大変ですよね...

 ライブラリ使ってるだけなので、そこを自前でって前提になってしまって、無理が
あるかなぁと思います。

[ ]
RE:09754 Win10複数NICのHidemarnet ExploNo.09755
秀まるお さん 18/09/10 18:01
 
 あと、もしまだ試されてなければですが、Hidemarnet Explorer with FTPSでのFTP
サーバーの設定に「高度な設定」があって、そこに


 ファイルリスト取得コマンド
 ファイルリストタイプ

 の設定があります。この辺のオプション類をいじるともしかしたらうまくいくかも
しれないです。

 ソースコードを見たら、この辺の設定を変更すると、TKFP.dllの特定のプロパティ
をセットしてるようでした。

 あと、Hidemarnet Explorer with FTPSの方だと、FTPのログ取りは全然機能してな
いようです。

 あとあと、Visual Basic版の方ですが、ソースコードを改めて見直したら、FTPの
ファイル一覧の取得とかの処理は自前でやってるかもしれません。でないとSOCKFTP.
LOGファイルが出力されないので。

 自前でやってる処理をそのままwith FTPSの方にも移植してたら良かったんですが、
TKFP.dllに置き換えてしまってるようではあります。(たぶんFTPS対応とかの関係で)

[ ]
RE:09755 Win10複数NICのHidemarnet ExploNo.09757
jechabon さん 18/09/10 22:19
 
いろいろと調査いただきありがとうございます。

>「高度な設定」があって、そこに
  : (中略)
> この辺のオプション類をいじるともしかしたらうまくいくかもしれないです。

この辺のオプションは、LANアナで変化を確認しながら全て試してみましたがダメで
した。
OS-9000はUNIX系(POSIX準拠)のOSですのでファイルタイプをMS-DOSにすると
TKFP.dllのエラーが表示されました。
Tiny Ftp Deamonのモードは何も変化ありませんでした。


>  あと、Hidemarnet Explorer with FTPSの方だと、FTPのログ取りは全然機能して
>ないようです。

そのようですね。正常に動作するLinux系のProFTPDやvsFTPdで試したときに気づきま
した。


>  自前でやってる処理をそのままwith FTPSの方にも移植してたら良かったんです
>が、TKFP.dllに置き換えてしまってるようではあります。(たぶんFTPS対応とかの
>関係で)

以前、VB版の時に多数の修正をしていただき快適に動作するようになったのですが、
その直後にリリースされた.NET版では動作しなかったので、当時はちょっとショック
でした。
HidemarnetはOS-9000に対応する数少ないFTPツールでとても便利だったので、ちょっ
と残念です。

[ ]
RE:09757 Win10複数NICのHidemarnet ExploNo.09758
秀まるお さん 18/09/11 08:31
 
 いろいろテストしていただいてたということで・・・

 やはりHidemarnet Explorer両バージョンとも対応は困難なので、とりあえずFTPを
使う時にNICの有効/無効化をする作戦でやっていただくしか無いかなぁと思います。

 コマンドラインで出来るようなので、秀丸マクロからも一応可能なのかなぁと思い
ます。(管理者権限が無いと無理かもしれないけど)
 https://qiita.com/redpanda/items/2746f63ff0d29bba4ee2

[ ]