none
msg.exeを使用したメッセージの送信について RRS feed

  • 質問

  • vb2010で開発を行っています。

    LANで接続されている他のPCへ簡単なメッセージを送信するプログラムを作成しています。

    http://blog.livedoor.jp/akf0/archives/51469841.html

    上記のURLを参考にプログラムを組んでみたのですが、ファイルが見つかりませんとエラーになってしまいます。

    Dim oProc As New Process
    
    oProc.StartInfo.FileName = "MSG.exe"
    
    oProc.StartInfo.Arguments = "送信先のログインユーザーID /SERVER:送信先のIPアドレス 送信メッセージ"
    
    oProc.Start()  '←ここでファイルが見つからないエラー発生
    

    msg.exeは"C:\Windows\System32\msg.exe"に存在していることを確認しています。

    ためしに

    oProc.StartInfo.FileName = "C:\Windows\System32\msg.exe"

    とやっても結果は同じでした。

    このエラーはどうやれば回避できるのでしょうか?

    また、コマンドプロンプトから

    C:\> MSG 送信先のログインユーザーID /SERVER:送信先のIPアドレス 送信メッセージ

    と実行した場合、セッション名の取得エラー5となってしまいます。

    RPC接続を有効にしないとダメなようなので、送受信両方のPCのレジストリを変更し

    RPC接続を有効にしても状況は変わりませんでした。

    なにか他に設定しないとならない項目があるのでしょうか?

    送受信ともにWindows7のPCです。

    2015年2月19日 12:09

回答

  • ファイルシステムリダイレクタの機能により、たとえファイルが存在しなくても%windir%\SysWOW64ディレクトリにリダイレクトされます。そして%windir%\SysWOW64\msg.exeは存在しないため、このようなエラーになります。Windows 7でしたら解決策も挙げられていて、 %windir%\sysnative\msg.exe を使用してください。
    2015年2月19日 12:33

すべての返信

  • こんにちは。

    セッション名の取得エラー5については以下を参照されると良いでしょう。
    http://blogs.technet.com/b/junichia/archive/2010/04/06/3323377.aspx
    http://nasunoblog.blogspot.jp/2013/09/windows-msg-exe.html

    Msg.exeは存在すると思うので管理者権限で実行してみてください。


    また、送信先はlocalhostから検証を始めたほうが良いと思います。
    localhostで動きますか?
    2015年2月19日 12:29
    モデレータ
  • ファイルシステムリダイレクタの機能により、たとえファイルが存在しなくても%windir%\SysWOW64ディレクトリにリダイレクトされます。そして%windir%\SysWOW64\msg.exeは存在しないため、このようなエラーになります。Windows 7でしたら解決策も挙げられていて、 %windir%\sysnative\msg.exe を使用してください。
    2015年2月19日 12:33
  • 回答ありがとうございます。

    2番目のページは見ていなかったです。

    このサイトの「1.送信側および受信側に同一のローカル ユーザを事前に登録している」とありますが

    これは送受信PC共に、ログインユーザーに同一の名前のユーザーを登録しておくと言うことだと思いますが

    同一のユーザーでログインしていないと送受信できないと言うことなのでしょうか?

    それともユーザーの登録をしておけば別のユーザーでログインしていてもメッセージは送受信できるということなのでしょうか?

    2015年2月19日 14:33
  • 回答ありがとうございます。

    そういうことだったのですね。リンク先も参照してみます。

    ありがとうございました。

    2015年2月19日 14:35