WindowsPC同士でWindowsの機能のみでメッセージをやりとりする(失敗談)

業務中に相談しながら作業したいって時ありますよね。

しかし、静かな環境であったり、座席が離れていたりして、会話しにくい時があります。

そういう時、チャットツールやメッセージツールなりを使って、リアルタイムに話ができれば効率が上がります。

インターネットに繋がれば、クラウドのチャットサービスも利用できますが、ローカルLANのみの作業環境もあるのではないでしょうか。また、昨今のセキュリティ事情から、ツールのインストールが制限されていることも多いです。

 

そこで、作業で使っている端末の標準機能のみを使ったメッセージのやり取りを試したいと思います。

 

私の使っているWindows7で試してみようと思います。

まずは、昔よくつかっていた方法からやってみます。

 

自分のマシン:  windows7 192.168.13.7/255.255.255.0

相手のマシン:  windows7 192.168.13.8/255.255.255.0

ローカルLANにどちらも繋がっています。

 

とりあえず、CMD命令でDOS窓を起動して、net sendをしてみます。

C:\Users\user1>net send 192.168.13.8 "テスト送信"
このコマンドの構文は次のとおりです:

NET
    [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
      HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
      STATISTICS | STOP | TIME | USE | USER | VIEW ]

C:\Users\user1>

あれ?windows7ではSENDが使えなくなっていますね。

じゃあ、他の手段を試してみましょう。

 

調べてみると、windows7やvista以降は、msg.exeに置き換わったようです。

ではmsgコマンドを使ってみます。

C:\Users\user1>msg
ユーザーにメッセージを送信します。

MSG {ユーザー名 | セッション名 | セッション ID | @ファイル名 | *}
    [/SERVER:サーバー名] [/TIME:秒] [/V] [/W] [メッセージ]

  ユーザー名          送信先のユーザー名を指定します。
  セッション名        セッション名を指定します。
  セッションID        セッション ID を指定します。
  @ファイル名         メッセージの送信先一覧のファイル (ユーザー名、
                      セッション名、セッション ID) を指定します。
  *                   指定されたサーバーのすべてのセッションにメッセージを
                      送信します。
  /SERVER:サーバー名  送信先のサーバーを指定します (既定値は現在のサーバー)。
  /TIME:秒            受信者の確認応答までの待ち時間を指定します。
  /V                  実行中に詳細情報を表示します。
  /W                  ユーザーからの応答を待ちます。通常 /V オプションと共に
                      指定します。
  メッセージ          送信するメッセージを指定します。指定しない場合は、入力
                      プロンプトが表示されるか、または stdin から読み取ります。


C:\Users\user1>C:\Users\user1>msg Console /server:192.168.13.8 "テスト送信"
セッション名の取得エラー 5

C:\Users\user1>

コマンドは有効そうですが、「セッション名の取得エラー 5」っていうエラーになりました。

リモートメッセージだからかな。。。。自分の端末に送ってみる。

C:\Users\user1>msg Console /server:192.168.13.7 "テスト送信"

C:\Users\user1>

自分の端末へは送信できたようです。

相手の端末に何か設定が必要そう。。

 

どうやら、msgコマンドの規定ではリモートの Windows 7 や Windows Vistaに対してメッセージを送付することができないようです。でも自分のPCへは送信できたので、レジストリで制限があるのだろうと予測して調べてみました。

 

やはり、変更をすれば動きそうなので、やってみます。

原因は、ターミナルサービスセッションに対するリモートからのRPC接続が無効に設定されているからのようです。

キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
値の名前 AllowRemoteRPC
タイプ REG_DWORD
01

C:\Windows\system32>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Se
rver" /v AllowRemoteRPC  /s

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
    AllowRemoteRPC    REG_DWORD    0x0

検索の完了: 該当 1 件

C:\Windows\system32>reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Serv
er" /v AllowRemoteRPC  /d 1 /t REG_DWORD
値 AllowRemoteRPC は存在します。上書きしますか? (Yes/No) y
この操作を正しく終了しました。

C:\Windows\system32>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Se
rver" /v AllowRemoteRPC  /s

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
    AllowRemoteRPC    REG_DWORD    0x1

検索の完了: 該当 1 件

C:\Windows\system32>

レジストリをコマンドで変更する時は、管理者権限でコマンドプロンプトを起動する必要があります。

では、早速、試してみます。

C:\Users\user1>msg Console /server:192.168.13.8 "テスト送信"
セッション名の取得エラー 5

C:\Users\user1>

あれ。。。。

調べてみると、制限があるようです。

 

  • 対象はドメインのメンバーコンピューターのみ
  • 管理者権限が必要
  • ファイアウォールを開ける必要がある
    以下のグループポリシーを追加します。
    Windows Vista, 7の場合
    コンピューターの構成/ポリシー/Windows の設定/セキュリティの設定/セキュリティが強化された Windows ファイアウォール/セキュリティが強化された Windows ファイアウォール - LDAP://(略)/受信の規則/
    新規作成して、リモートサービス管理をあける
    Windows XPの場合
    コンピューターの構成/ポリシー/管理用テンプレート/ネットワーク/ネットワーク接続/Windows ファイアウォール/ドメイン プロファイル/
    Windows ファイアウォール: 着信リモート管理の例外を許可する

ということで、今回は、あきらめました(残念)