実は Windows のフォルダ/プリンタ共有は複雑

  • 投稿日:
  • by
簡易ファイルの共有を無効にしている場合のお話です。 実は、これまでネットワーク間でのフォルダの共有は行ったことがあるのですが、プリンタの共有を行ったことはありませんでした。

そこでプリンタの共有を行おうと、フォルダの共有と同じような手順を踏んだのに、ネットワーク上にプリンタが見つからないとのメッセージが...

最終的にはうまくいったのですが、恥ずかしながらかなり手こずりました。時系列で説明しようかとも思ったのですが、あまり実のある内容になりそうもないので、整理して書こうと思いますw

結論から言うと、同一ネットワーク上の他の Windows マシンと共有するためには、以下の 2 つの要素をパスする必要があります。
  • ネットワーク上のマシンにアクセスする際のパスワード認証
  • アクセスするユーザーに対するアクセス先の権限
で、自分がやりたいことはプリンタの共有。
そのためにやらなければならないことはパスワードなしでの認証。実はこれに気づくまでに時間がかかった。
フォルダの共有では、共有を行ったネットワーク上のマシンにアクセスする際にパスワードを求められるため迷うことなく操作できたが、プリンタのインストールでは、ネットワーク上のプリンタの検索でリストにさえ出てこないのだ。
ここでリストに出てきて、プリンタを選択した際にパスワードを求められるのなら理解できるが、例えプリンタの共有設定を有効にした状態であっても、パスワード認証をクリアした状態でないと選択可能なプリンタのリストにさえ出てこないというのはかなり意地悪な仕様ではないかと思う。

ということで、順を追って具体的な手順を説明します。まずはアクセス元の共有設定から。
  • 簡易ファイルの共有の無効化
    1. ウィンドウを開き、[ツール] » [フォルダオプション] をクリック
    2. [表示] タブ内で [簡易ファイルの共有を使用する (推奨)] のチェックを外し [OK] をクリック
  • Guest ユーザーの有効化
    1. [スタート] メニュー » [管理ツール] » [コンピュータの管理] をクリック
    2. [ローカル ユーザーとグループ] » [ユーザー] の Guest ユーザー を右クリックしてプロパティを開く
    3. [アカウントを無効にする] のチェックを外し [OK] をクリック
  • ローカル セキュリティの設定

    共通の操作

    [スタート] メニュー » [管理ツール] » [ローカル セキュリティ ポリシー] » [ローカル ポリシー] をクリック
    • 空のパスワードの使用許可
      1. [セキュリティ オプション] の [アカウント: ローカル アカウントの空のパスワードの使用をコンソール ログオンのみに制限する] を右クリックしてプロパティを開く
      2. [ローカル セキュリティの設定] タブ内で [無効] を選択し [OK] をクリック
    • ネットワーク経由でのコンピュータへのアクセスを拒否するユーザーからの除外
      1. [ユーザー権利の割り当て] の [ネットワーク経由でコンピュータへアクセスを拒否する] を右クリックしてプロパティを開く
      2. [ローカル セキュリティの設定] タブ内で Guest ユーザー を選択し [削除] をクリック
      3. [OK] をクリック
で、共有する対象(アクセス元)別の手順は以下となります。
  • プリンタを共有する場合
    1. [スタート] メニュー » [プリンタと FAX] を開く
    2. [対象のプリンタ] を右クリックしてプロパティを開く
    3. [共有] タブ内で [このプリンタを共有する] を選択し [共有名] を設定して [OK] をクリック
      ※共有名にはハイフンを使わないこと。また、Windows Me や Windows NT 4.0 以前のマシンからのアクセスを前提とする場合には、[追加ドライバ] から該当のドライバをインストールすること。
      また、念のため [セキュリティ] タブを開き、Everyone ユーザーに最低でも [印刷] 権限が許可されていることを確認しておいた方がいいと思います。
  • フォルダを共有する場合
    1. [対象のフォルダ] を右クリックしてプロパティを開く
    2. [共有] タブ内で [このフォルダを共有する] を選択し [共有名] を設定して [OK] をクリック
      ※共有名にはハイフンを使わないこと。念のため、[アクセス許可] » [Everyone] に [読み取り] 権限が付与されていることを確認しておくこと。
アクセス元の設定は以上です。次はアクセス先の設定を行います。共有フォルダへのアクセスは [マイ ネットワーク] からアクセスするとして、プリンタの場合には、あらかじめプリンタのインストールが必要になります。
手順は以下の通り。
  1. [スタート] メニュー » [プリンタと FAX] を開く
  2. [プリンタのタスク] の [プリンタのインストール] をクリック
  3. [プリンタの追加ウィザードの開始] ウィンドウで [次へ] をクリック
  4. [ネットワーク プリンタ、またはほかのコンピュータに接続されているプリンタ] を選択し [次へ] をクリック
  5. [プリンタを参照する] または [指定したプリンタに接続する] をクリック
  6. 前項で選択した対象に応じた手順を実行します。
    • [プリンタを参照する] を選択した場合

      [共有プリンタ] から対象のプリンタを選択し [次へ] をクリック

    • [指定したプリンタに接続する] を選択した場合

      [名前] テキストボックスにプリンタ名を入力し [次へ] をクリック

  7. 通常使うプリンタに設定する場合には [はい]、設定しない場合には [いいえ] を選択(任意)し [次へ] をクリック
  8. [完了] をクリック
以上でネットワーク上のプリンタが使えるようになるはずです。
これらの条件が揃わない場合にはエラーメッセージが表示されます。
例えば、Guest ユーザーが有効で、[ネットワーク経由でコンピュータへアクセスを拒否する] に Guest ユーザーが含まれている状態でネットワーク上のマシンにアクセスした場合には、以下のメッセージが表示されます。
ログオン失敗: 要求された種類のログオンは、このコンピューターではユーザーに許可されていません。
分からないですよね、自分で設定している訳じゃないんですから...

それと、こんなメッセージが表示される場合もあります。
同じユーザーによる、サーバーまたは共有リソースへの複数のユーザー名での複数の接続は許可されません。サーバーまたは共有リソースへの以前の接続をすべて切断してから、再試行してください。
これは、すでに他のユーザーで共有先への接続が確立されている場合に発生するのですが、実はアクセス先で拒否されているのではなく、アクセス元のマシンが拒否しているのです。
Windows マシンは基本的にシングルユーザーでの操作を基本としていますので、アクセス元のマシンの複数のユーザーが同じネットワーク上のリソースにアクセスした場合、どちらのユーザーでの操作なのか判断できなくなってしまうのです。そのため、同じリソースへのアクセスは 1 ユーザーのみのアクセスに限定されます。

確立された接続は、通常は再起動で切断されるのですが、権限によっては接続されっぱなしになることがあるようです。
その場合には、コマンドプロンプトからコマンドラインで明示的に切断することが可能です。
コマンドプロンプトを起動したら、まずは確立されている接続を表示してみます。
C:¥>net use
新しい接続は記憶されます。

ステータス  ローカル名 リモート名                ネットワーク名

----------------------------------------------------------------------------
OK                     ¥¥WINXP01¥DOWNLOADS          Microsoft Windows Network
OK                     ¥¥WINXP02¥SHARE              Microsoft Windows Network
コマンドは正常に終了しました。
自分の場合は 2 つ見つかりました。すべて切断する場合には、以下のようにします。
C:¥>net use * /delete
これらのリモート接続が存在します:

                    ¥¥WINXP01¥DOWNLOADS
                    ¥¥WINXP02¥SHARE
続行すると、接続は取り消されます。

この操作を続行しますか? (Y/N) [N]: 
特定の接続だけ切断する場合には以下のようにします。
C:¥>net use ¥¥winxp01¥downloads /delete
¥¥winxp01¥downloads が削除されました。
後は再度ネットワーク上のマシンにアクセスすればいいだけです。
通常は GUI 上で行いますが、コマンドライン上からも接続の確立は可能なので、実行例を載せておきます。
C:¥>net use ¥¥winxp01 /user:guest password
コマンドは正常に終了しました。
ちなみに、パスワードがかかっている場合には以下の通りです。
C:¥>net use ¥¥winxp01 /user:guest password:pass
コマンドは正常に終了しました。
以上です。お疲れ様でした!

参考にしたリンク