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

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が自動になっているか確認する。

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リモートプロシージャコールが

無効になっている場合があります。

 

名称未設定-3

 

スポンサーリンク

 

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

 

コマンドプロンプトで

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

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

名称未設定-4

 

社内のメッセージ通知に必要だったのでいろいろ調べた結果、上記で送信可能になりました。

Windows7 Pro環境ですので環境によって多少違うかもしれませんが、大きな流れはほぼ同じです。

 

いちいちコマンドプロンプトを開いてコマンド打ってメッセージを送信するのは結構面倒なので、

WSHスクリプトを組んでおくと楽です。

自分は送信先のコンピュータ数が少なかったので、コンピュータ名を手動で入力していましたが、

複数ある場合は、選択できるようにすると良いです。

 

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

 

通常オプションを指定せすにmsgコマンドメッセージを送信すると、

相手がメッセージを見てOKボタンを押すか、送信から1分経過すると

メッセージボックスは自動的に閉じられます。

相手が席に居るか分からないけど、1分間表示されていたら

他の誰かに見られてしまうかも?なんていうときに便利なコマンドオプション

 

msgコマンドに/time オプションを付けると、

送信したメッセージを相手側画面に表示する秒数を指定できます。

 

コマンド例

msg * /server:hogehoge /time:1

 

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

コメント