Bar

Windows メッセージを送信するmsg.exeの設定と使い方~ユーザ登録とレジストリ設定が大切

image_thumb[1]
net sendを多用していた事が懐かしいなと思っている今日この頃、久しぶりにmsg.exeを使ってみました。
仕様や設定が頭の中からすっぽり抜けていたため、サーバからクライアントへのメッセージがエラーになりました。
今回は、msgを利用するための設定と使い方をメモ。
設定を忘れてると嵌ります!そして、嵌りました!!
なお、Windows 8でのmsgは設定が若干異なるようです。結果のみですが、その点もメモしておきます。

msg.exeとは何ぞや?

msg.exeはWindows クライアントやサーバ等にメッセージを送信するプログラムです。
サービスやプログラムの異常終了等を通知する手段として利用しているケースが多いのかな?
Windows 2000やXP時代は、net sendで管理者PCに対しアラートを通知していました。
※Windows XPからMessengerサービスを起動しないと使えませんでしたね。懐かしい・・・
image

msgを利用するための設定

msgを利用するためにはいくつかの設定が必要です。
  1. 送信側および受信側に同一のローカル ユーザを事前に登録している
     image
  2. RPC(Remote Procedure Call)サービスが開始されている
    image
  3. レジストリ[AllowRemotePRC]が有効になっている
    MS エバンジェリスト 安納さんのブログ記事を見てください。
    image
  4. ホスト名が解決できる

msg.exeはUsers、または、Administratorsグループのユーザが実行可能

msg.exeのプロパティを見ると、UsersおよびAdministratorsグループに対し、
  • 読み取りと実行
  • 読み取り
権限が付与されています。
そのため、前述の1番のユーザは、どちらかのグループに所属している必要があります。
image

ユーザを有効にする=事前のログオンが必要

前述の1番ですが、ユーザを作成しただけでは×。
事前にログオン(サインイン)し、usersフォルダが作成されていることを確認。
image

[セッション名の取得エラー 5]が表示される

送信側、および、受信側の設定が出来ていない時によくあるエラーが[セッション名の取得エラー 5]です。
image
前述の設定で、1番と3番が出来ていない時によく遭遇します。
3番のレジストリは
キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
名前:AllowRemoteRPC
種類:REG_DWORD
値:1(初期値は0)
に変更しましょう。
image

結果のみ:Windows 8はレジストリの設定は不要

結果のみです。
Windows Vista BizのPCから前述のレジストリの設定を施していないWindows 8 無印およびProのPCに対しメッセージを送信してみました。
結果、メッセージの受信は成功しました。
理由は分かっていませんが、AllowRemoteRPCの設定は不要なようです。でも、なぜなんだろう・・・
aaa

結果のみ:Microsoft アカウントには未対応

こちらも結果だけになります。
Microsoft アカウントでサインインしたWindows 8 無印およびProのPCに対し、Windows Vista Bizからメッセージを送信したところ失敗しました。
console以外だけでなく、*やnet usersコマンドの一覧にあるMicrosoft アカウント ユーザ名に対しても失敗。
そもそも出来ない事なのか、それとも、設定が必要なのか、全く分かっていません。
Windows 8はローカル ユーザにのみメッセージが受信となりそうです。
image
余談:ホーム ユースにはmsg.exeがない&lusrmgr.mscから設定できない
今回Windows 7 Home BasicやWindows 8 無印等ホーム ユースのOSでも検証しました。
その際気が付いた事が2点。
当然の結果といえば当然ですわな。
  1. msg.exeがない
    ホーム ユースのOSにはmsg.exeがありません。
    imageimage
  2. lusrmgr.mscからユーザ&グループの設定は出来ない
    image
やっぱりPro以上じゃないと・・・