AndroidでWindows共有フォルダを開けない時の対処方法

こんにちは。不可思議絵の具です。

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までしか対応していないようです。

(2017/12/01追記)
ES File Explorerも課金すればSMB 2.0が有効になるようです。
(2018/02/06追記)
いつの間にかPerfect ViewerもSMB 2.0に対応した模様。
(2018/02/06追記)
操作性にかなり癖がありますが、Androidのファイルマネージャは「X-plore」が超おすすめです。
SMB 2.0対応など当たり前で、DLNAやGoogle Driveなどのクラウドドライブ、果てはSSH経由のFTP(SFTP)まで対応しており、相当マニアックです。
内蔵ビューアの使い勝手もよく、ZIP内画像も普通に観れます
見開き表示できなくていいならPerfect Viewerさえ不要です。
いつか有料化するのでしょうが、無料なのが怪しいほど高機能です。
自分は完全にES~から乗り換えてしまいました。

対策

スポンサーリンク

対策は

  1. AndroidアプリをSMB2.0以降に対応するものに換える
  2. Windows側でSMB 1.0を有効にする

のどちらかになります。

対策①:AndroidアプリをSMB 2.0以降に対応するものに換える

SMB 2.0以降に対応するAndroidアプリを使えば、Windows側は何も変更せずに済みます。

アプリ例X-ploreAndSMB

セキュリティ上はこちらが理想ですが、使い慣れたアプリを手放すか、使い慣れたアプリがSMB 2.0に対応するのを待つ必要があります。

対策②:Windows側でSMB 1.0を有効にする

「Windowsの機能の有効化または無効化」画面で【SMB 1.0/CIFS ファイル共有のサポート】を有効にします。

関連記事Windows10の重さを解消!不要機能を無効化する方法

ただしセキュリティが大幅に低下するので、あまりおすすめできません。
WannaCry対策パッチを当てていることが大前提です!

関連記事至急アップデートを!WindowsXPで「WannaCry」ウイルス被害拡大中!

どちらを選ぶかは状況による

理想は①です。

でも、Android端末が多くて設定変更が大変とか、使い慣れたアプリを変えたくないということであれば②で対応するしかないですね。

私は家庭内の状況だったので、②で対応しました。

(2018/02/06追記)
Androidアプリ側の対応が進んだので、対策①で済むようになりました。
各作者様には頭が上がりません!

解説

Windows共有フォルダの機能は「SMB」という通信プロトコルによって実現されており、WindowsのバージョンによってSMBのバージョンも変わってきます。

そして、これが今回のトラブルの本質なのですが、
SMB 1.0と2.0以降には互換性がありません。

WindowsバージョンSMBバージョン
Vistaより前SMB 1.0
互換性の壁
Vista以降SMB 2.0以上
8以降SMB 3.0以上

詳細Server Message Block(Wikipedia)

私の環境では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のバージョンについてもっとマニアックに知りたい方は、こちらの記事が参考になります。

さまざまなバージョンのPCやデバイスが接続されたネットワークでは、ファイル共有のためにSMBのバージョン(ダイアレクト)のネゴシエーションが行われ、適切なバージョンが自動選択されて、共有リソースへのアクセスが可能になります。今回は、Windows同士のSMBネゴシエーションの様子をちょっとのぞいてみましょう。

では(^O^)/