どうしてもWindowsの共有フォルダが見えない対処

この記事は自分のための備忘録です。

Windowsの家庭向けエディションではNFSが使えないのでWindows PCとのファイルの受け渡しにはWindowsの共有機能を使おうかということになるんだけど、最近のWindowsはその共有がなんかわかりにくくて困る。
Windowsは昔からのクセで3ヶ月〜1年毎くらいにはクリーンインストールするんだけど、最近はその度に「なんで共有設定したのにフォルダが見えないの?」って悩むことに。
おそらくWindows 10など新しいWindows同士なら問題無い筈だが、Linuxなどからはワークグループ内のWindowsのPC名は表示されてもその中の共有フォルダが見えないのよね。

この記事では普通にネットワークの設定やフォルダを共有するあたりは既に出来ているものとして、知らないと解決無理で且つ忘れやすいところだけ。最初のSMB 1.0/CIFSサーバー有効化は2017年秋のFall Creators Updateの変更によるものなので新しい悩みの種だけど。

SMB 1.0/CIFSサーバー有効化

Windows共有設定 1
Windowsの検索で「機能」を入力すると候補として「Windowsの機能の有効化または無効化」が表示されるのでそれをクリック。

Windows共有設定 2
リストから「SMB 1.0/CIFSファイル共有のサポート」を探す。そこのチェックボックスがおそらく■になっている筈。
その左の を押す。

Windows共有設定 3
「SMB 1.0/CIFSサーバー」にチェックが付いていない(筈な)のでチェックを付ける。
[OK]を押す。

Windows共有設定 4
画面が勝手に進行する。

Windows共有設定 5
「必要な変更が完了しました。」が出たら[閉じる]を押して終了。
なお、その後にWindowsの再起動を忘れずに

これで他の古いWindowsやLinuxなどから共有設定した筈のフォルダが見える(使える)ようになった筈。

マイク○ソフトに言いたい。設定をあちこち散らばらせすぎるとわからんくなるからヤメて!!

セキュリティ上の理由で「SMB 1.0/CIFSサーバー」が標準で無効化されたようなので必要がないのに無闇矢鱈に有効化しないこと。

少し古いクライアントでアクセスできない場合

Windows 10 共有設定 1
ネットワークと共有センターを開き、共有の詳細設定を選択する。
項目の中から「ゲストまたはパブリック」を展開する。
「ネットワーク探索を有効にする」にを付ける。
「ファイルとプリンターの共有を有効にする」にを付ける。

Windows 10 共有設定 2
項目の中から「すべてのネットワーク」を展開する。
「40ビット暗号化または56ビット暗号化を使用するデバイスのためのファイル共有を有効にする」にを付ける。古い端末以外ではこれを変更すると逆に接続できなくなることがある。後述のVolumioとかもこれを触ったらダメなので128ビット暗号化にしておくこと。
「パスワード保護共有を無効にする」にを付ける。

共有フォルダの側のアクセス権限を変更・確認する。

Windows 10 共有設定 3
共有させるフォルダを右クリックしてプロパティを表示し、上部の[共有]タグを選択。
「ネットワークのファイルとフォルダーの共有」の中の[共有]をクリック。
クライアントによっては共有する相手にEveryoneを追加し、アクセス許可のレベルに「読み取り」、または「読み取り/書き込み」を設定する。

Windows 10 共有設定 3
共有させるフォルダを右クリックしてプロパティを表示し、上部の[共有]タグを選択。(要するに前の手順の1階層前の画面)
「詳細な共有」の中の[詳細な共有]をクリック。

ここまでで少し古いクライアント程度なら共有フォルダにアクセスできる筈。

特に古いクライアントから共有フォルダにアクセスできない場合

共有フォルダを提供する側の変更だが、普通はここまで変更する必要はない筈。

レジストリエディタ
基本的にはレジストリエディタで設定を変更する。慣れていないと探しにくく解りにくいけど。

レジストリエディタ
幾つかの設定はローカルグループポリシーエディタでも変更できる。ただし、Homeエディション以下には入っていない。

[匿名の制限] チェック
レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous

0 — 制限なし。既定のアクセス許可に従って制限される
1 — セキュリティ アカウント マネージャのアカウントおよび名前の列挙を許可しない
2 — 明示的な匿名アクセス許可がない限りアクセスできない
初期値は0の筈。この記事では変更しない。
下の戻し用レジストリにだけ含める。

ローカルセキュリティポリシー「ネットワークアクセス: Everyoneのアクセス許可を匿名ユーザに適用する」を無効から有効に変更。 レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\everyoneincludesanonymous
0から1に変更。

「ネットワークセキュリティ: 次回のパスワード変更時にLan Managerのハッシュ値を保存しない」を有効から無効に変更。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\NoLmHash
1から0に変更。

「ネットワークアクセス: 名前付きパイプと共有への匿名のアクセスを制限する」を有効から無効に変更。
レジストリ
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters\restrictnullsessaccess
1から0に変更。

面倒なのが嫌いな人向けにレジストリファイルを用意した。ダウンロードして実行すると上の変更が適用される。
control_lsa.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"NoLmHash"=dword:00000000
"everyoneincludesanonymous"=dword:00000001

serviceslanmanserver_parameters.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"restrictnullsessaccess"=dword:00000000

初期値に戻し用のレジストリファイル

control_lsa_retrieve.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"NoLmHash"=dword:00000001
"everyoneincludesanonymous"=dword:00000000
"restrictanonymous"=dword:00000000

serviceslanmanserver_parameters_retrieve.reg
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"restrictnullsessaccess"=dword:00000001

(以下2018年1月追記)

中途半端に特殊な場合

Volumio2は2017年最後の更新でWindows共有の設定が変更になった模様。一部の人がアクセスできなくなったと言っている。
試した限りではプロトコルとしてSMB2.0またはSMB2.1を指定してマウントしてやる必要があるっぽい。SMB3.0以降はNG。

VolumioでSMBマウント
Volumioの設定でマイミュージックを開く。
「ネットワークドライブ」の項目で[新規のドライブを追加]をクリック。
[拡張オプションの表示]をクリックすると設定項目が増える。
「オプション」に「vers=2.0」または「vers=2.1」を入力する。その他の項目はこれまでと変わらず。

VolumioのWebUIでは、Windowsのファイル共有のフォルダをネットワークドライブとして登録しようとして失敗したものを「編集」で開いてオプションを登録して保存してもダメみたい。登録失敗しているドライブを一度削除してから再度「新規のドライブを追加」で追加することが必要。

これでたぶんいける筈。

2018年1月21日追記:
VolumioでWindows 10の共有をマウントするならこの記事の「特に古いクライアントから共有フォルダに・・」部分以外を全部やってね。ただし、共有の詳細設定の「すべてのネットワーク」の「ファイル共有の接続」で「40ビット暗号化または56ビット暗号化・・」はダメ、128ビット暗号化を使用して・・」にすること。
あと、共有する側で共有名に日本語を使うとVolumio側でいろいろトラブル筈なので共有名には日本語を使わない。(共有するフォルダ名やファイル名に日本語を使うなという意味ではない)
Windows(サーバ側)でSMB1.0を有効にしてクライアント側でSMB2.xを指定というのは何をしたいのか小一時間とは思うけど・・・

関連記事:



1件のコメント

  1. BuffaloのLINKSTATIONを開けなくなって困っていたところ、こちらの対応をしたことで治りました!とても助かりました。ありがとうございます!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です