Windows msgコマンドでメッセージを送信する設定方法とエラー対処法

記事内に広告が含まれています。

WindowsXPぐらいまではnet sendコマンドでメッセージを送信できましたが、それ以降のバージョンのWindowsになりnet sendコマンドでは送信できなくなりました。
ですが、代わりにmsgコマンドで同様にメッセージを送信することができます。
net sendに代えてmsgコマンドでメッセージを送信するために必要な設定を紹介します。
セッション名の取得エラーなどが出た場合などの対処も合わせて紹介します。

msgコマンドでメッセージ送信の設定に必要なのは

  1. リモートプロシージャコール(RPC)を有効にする(レジストリを編集)
  2. 送信先と送信元のコンピュータに同一のユーザが存在し、一度はログインしていること
  3. ログイン時にパスワードを設定していない場合は空のパスワードを許可する(gpedit.msc)
  4. サービスの設定でRPC(Remote Procedure Call)を有効にする。

使用するアカウントにパスワードを設定しておらず、空のパスワードでログオンしている場合は3の「空のパスワードを許可する」がデフォルトで無効になっていて送信できないことが多いので後述の空のパスワードを許可する設定をするかパスワードを設定する必要があります。

msgコマンドでメッセージ送信のための設定手順

●レジストリでリモートプロシージャコールを有効にするには

Windowsキー+「R」を押して「ファイル名を指定して実行」を表示して
regedit」と入力してレジストリエディタを開きます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server

を開き、AllowRemoteRPCの値が0になっていればに変更する。
変更したらレジストリエディタを閉じます。

「コンピュータ」→「管理」→「サービス」内にある
RemoteProcedureCallが「自動」になっているか確認する。

●ログイン時にパスワードを設定しておらず、空のパスワードになっている場合

OSがProなどの場合

Windowsキー+「R」を押して「ファイル名を指定して実行」を表示して
gpedit.msc」と入力して実行してグループポリシーエディタを開きます。
「ローカルコンピューターポリシー」

「コンピュータの構成」

「Windowsの設定」

「セキュリティの設定」

「ローカルポリシー」

「セキュリティオプション」
と開き、アカウント:ローカルアカウントの空のパスワードの使用をコンソールのみに制限するの値を有効から無効に変更します。

コンソール以外にリモートからも空のパスワードでログイン可能になるのでセキュリティを考慮のこと。

OSがHomeなどでグループポリシーエディタがない場合

Windowsキー+「R」を押して「ファイル名を指定して実行」を表示して
regedit」を実行してレジストリエディタを開きます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\limitblankpassworduseの値を0にすると空のパスワードを許可する設定になります。

●メッセージを送信できる状態か確認する

Windowsキー+「R」を押して「ファイル名を指定して実行」を表示して
cmd」と入力してコマンドプロンプトを開きます。

query session /server:(送信先のコンピュータ名)

と入力して下の画像のように表示されれば送信できる状態です。
エラーや、セッションが存在しないと表示されたら設定ができていないです。
ファイアウォールやウィルス対策ソフトが遮断している可能性もあるので、一度無効にするなどして確認して見ましょう。
セッション名の取得エラー5」と表示される場合はRPCリモートプロシージャコールが無効になっている場合があります。

msgコマンドで実際にメッセージを送信してみる

コマンドプロンプトで

msg * /server:(送信先のコンピュータ名) メッセージ

でエンターを押せば送信されます。

社内のメッセージ通知に必要だったのでいろいろ調べた結果、上記で送信可能になりました。
Windows7 Pro環境ですので環境によって多少違うかもしれませんが、大きな流れはほぼ同じです。
いちいちコマンドプロンプトを開いてコマンド打ってメッセージを送信するのは結構面倒なので、WSHスクリプトを組んでおくと楽です。
自分は送信先のコンピュータ数が少なかったので、コンピュータ名を手動で入力していましたが、複数ある場合は、選択できるようにすると良いです。

msgコマンドオプションでメッセージが表示される時間を設定

通常オプションを指定せすにmsgコマンドメッセージを送信すると、相手がメッセージを見てOKボタンを押すか、送信から1分経過するとメッセージボックスは自動的に閉じられます。
相手が席に居るか分からないけど、1分間表示されていたら他の誰かに見られてしまうかも?なんていうときに便利なコマンドオプションmsgコマンドに/time オプションを付けると、
送信したメッセージを相手側画面に表示する秒数を指定できます
コマンド例

msg * /server:hogehoge /time:1

として送信すると相手側に1秒間だけ表示されて消えます。

コメント