こんにちは。不可思議絵の具です。
Amazon Fire HD 8を買ったので、「画面も大きくなったしエ○動画でも見てみるか」と「ES File Explorer」や「Perfect Viewer」でWindowsの共有フォルダを開こうとしたけど…開かない。
というか他のAndroid端末でも、いつの間にか「ES File Explorer(※)」や「Perfect Viewer」からWindowsの共有フォルダを参照できなくなってしまいました。
以前はガンガン開いて見れていたのに…。
エ○動画が見れないのではタブレットを買った意味がない!
AndroidアプリからWindows共有フォルダを参照できない原因を調査しましたので、結果をまとめておきます。
原因
細かい解説は後ほど行うとして、先に原因を挙げます。
Vista以降のWindowsを使っていたり、WannaCry対策のためにSMB1.0を無効にしていませんか?
そのような環境ではAndroidアプリ側がSMB 2.0以降に対応する必要がありますが、一部のAndroidアプリがSMB2.0以降に対応していないことが原因です。
これは各Androidアプリの作りの問題で、「X-plore」「AndSMB」など、独自にSMB 2.0以降に対応しているAndroidアプリを使えば上手くいく場合があります。
「ES File Explorer」や「Perfect Viewer」はSMB 1.0までしか対応していないようです。
操作性にかなり癖がありますが、Androidのファイルマネージャは「X-plore」が超おすすめです。
SMB 2.0対応など当たり前で、DLNAやGoogle Driveなどのクラウドドライブ、果てはSSH経由のFTP(SFTP)まで対応しており、相当マニアックです。
内蔵ビューアの使い勝手もよく、ZIP内画像も普通に観れます。
見開き表示できなくていいならPerfect Viewerさえ不要です。
いつか有料化するのでしょうが、無料なのが怪しいほど高機能です。
自分は完全にES~から乗り換えてしまいました。
対策
対策は
- AndroidアプリをSMB2.0以降に対応するものに換える
- Windows側でSMB 1.0を有効にする
のどちらかになります。
対策①:AndroidアプリをSMB 2.0以降に対応するものに換える
SMB 2.0以降に対応するAndroidアプリを使えば、Windows側は何も変更せずに済みます。
セキュリティ上はこちらが理想ですが、使い慣れたアプリを手放すか、使い慣れたアプリがSMB 2.0に対応するのを待つ必要があります。
対策②:Windows側でSMB 1.0を有効にする
「Windowsの機能の有効化または無効化」画面で【SMB 1.0/CIFS ファイル共有のサポート】を有効にします。
ただしセキュリティが大幅に低下するので、あまりおすすめできません。
WannaCry対策パッチを当てていることが大前提です!
どちらを選ぶかは状況による
理想は①です。
でも、Android端末が多くて設定変更が大変とか、使い慣れたアプリを変えたくないということであれば②で対応するしかないですね。
私は家庭内の状況だったので、②で対応しました。
解説
Windows共有フォルダの機能は「SMB」という通信プロトコルによって実現されており、WindowsのバージョンによってSMBのバージョンも変わってきます。
そして、これが今回のトラブルの本質なのですが、
SMB 1.0と2.0以降には互換性がありません。
Windowsバージョン | SMBバージョン |
---|---|
Vistaより前 | SMB 1.0 |
互換性の壁 | |
Vista以降 | SMB 2.0以上 |
8以降 | SMB 3.0以上 |
私の環境ではWindows 10で共有フォルダを作っているのでSMB 3.0が使われていますが、初期設定のままだとSMB 1.0も有効なので、SMB 1.0にしか対応していないAndroidアプリでも通信できていました。
しかし、WannaCry騒動が起きた時に安全のためSMB 1.0を止めました。
この場合、Windows側はSMB 2.0での通信を試みますが、Androidアプリ側はそれよりも古いバージョンのSMBなので互換性がなく、通信できないという状況になってしまいました。
まとめ
OSが違うので仕方がないのですが、WindowsとAndroidのファイル共有は何かとハマりがちですよね。
Android側のJavaライブラリがプアなのが根本原因なのですが、これについてはアプリ作者による改善を待つしかありません。
SMBのバージョンについてもっとマニアックに知りたい方は、こちらの記事が参考になります。
では(^O^)/