none
Msg.exe的問題 RRS feed

  • 問題

  • 各位前輩們好

    由於Win7沒有Net Send功能,已更改成由Msg發送訊息給區網電腦,而我在使用上遇到一些問題需要前輩們的協助

    Msg 這個功能會寫在程式裡,以調用API的方式去呼叫,所以不考慮第三方軟體的功能

    我找了很多文章,大部分文章都提到必須在機碼部分將Terminal Server的AllowRemoteRPC的值更改為1,我照著更改

    還有我也在服務的地方將Remote Procedure Call (RPC) 與 Remote Procedure Call (RPC) Locator 服務啟動

    在遠端設定部分也允許來自任何版本之遠端電腦連線

    用Net View是可以看到目標電腦,搜尋處鍵入\\192.168.1.23也可以開啟對方的共享資源

    用ping 192.168.1.23 也可以ping到目標電腦

    但還是無法以指令「msg * /server:192.168.1.23 "PC21 Test Message"」將訊息傳給目標電腦(Win7)
    錯誤訊息:取得工作階段名稱時發生錯誤5

    目標電腦以指令「msg * /server:192.168.1.21 "PC21 Test Message"」
    錯誤訊息:取得工作階段名稱時發生錯誤1825

    工作群組同樣是WORKGROUP

    使用Net HelpMsg 5 的資訊是:存取被拒
    使用Net HelpMsg 1825 的資訊是:發生安全性封裝特定錯誤

    請問我應該再進行哪些設定呢?若想將訊息也傳給XP電腦,我應該怎麼做呢?

    作業系統:Win 7 pro 32 bit SP1

    目標電腦作業系統:Win 7 pro 32 bit SP1



    • 已編輯 GISK 2013年1月9日 上午 06:41
    2013年1月9日 上午 06:33

解答

  • 這問題我也昨天遇到, 花了大半天研究, 整理如下,希望對你有幫助。

    MSG使用方式整理

    使用方式:

    MSG 收訊電腦帳號 or session ID /Server:收訊電腦名稱或IP 訊息

    條件:

    收送訊的兩台電腦需在同一domainworkgroup

    測試結果:

     1.收訊端電腦要做下列設定

    (1)  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer

    allowRemoteRPC=1

    (2)  fDenyTSConnections=0  (收訊端電腦是win7 or win8要注意這個是否為0)

        2.發訊端電腦

    (1)  執行rundll32.exe keymgr.dll, KRShowKeyMgr,將登入收訊端電腦的帳號密碼打上去 (發訊端電腦是 windows 2008 Srv)

    (2)  sg administrator /server:10.100.1.24 test

    (3)  sg 0 /server:10.100.1.123 test  (收訊端電腦是XP時,給session id0console)

    (4)  Msg * /server:10.100.1.123 test  (給收訊端所有登入session id)

    • 已提議為解答 merphy2007 2013年1月15日 上午 06:48
    • 已標示為解答 GISK 2013年1月17日 上午 01:08
    2013年1月15日 上午 06:47
  • 我早上再幫忙測了一下,一定要同帳號才能互傳訊息,
    譬如發送端是以 Peter 的帳號登入,接收端卻是以 Aska 帳號登入,
    那麼發送端一定要 Runas /user:aska "msg * /server:ip "test"",
    也就是要以 Aska 的身分發送訊息出去,
    那麼 Aska 端才會收到。

    至於你說的瞬閃視窗,我利用錄影的方式把錯誤訊息找出來,
    會出現「* does not exist or is disconnected」。

    其實假如你的環境是有加入網域的,
    問題應該就不會這麼複雜了。


    蘇老碎碎念
    資訊無涯,回頭已不見岸
    好用的微軟技術支援小工具
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    • 已標示為解答 GISK 2013年1月17日 上午 01:08
    2013年1月14日 上午 03:14
    版主

所有回覆

  • 手邊沒有兩台 Win7,只好用兩台 Win8 VM 大概模擬了一下狀況:
    1. 同樣採工作群組模式,兩台電腦都以同樣帳號Aska及密碼登入,
    2. 為求快速並減少可能的干擾,防火牆直接關閉
    3. 登入帳號皆屬本機端Administrator

    在這樣的環境下是可以正常用這個指令發送訊息,並讓接收端得到訊息。

    但什麼狀況會發生你講的錯誤 5 呢?
    只要我在傳送端換一個帳號,也就是接收端沒有相同的帳號及密碼時,
    就會發生這個錯誤訊息。

    如果不考慮第三方的方式去廣播訊息,
    其實很容易碰上身分權限存取問題。



    蘇老碎碎念
    資訊無涯,回頭已不見岸
    好用的微軟技術支援小工具
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案



    2013年1月10日 上午 09:14
    版主
  • AskaSu前輩 您好

    我的登入帳戶與目標電腦登入帳戶皆有系統管理員權限

    兩台電腦使用者不一樣,所以登入帳號不同,但密碼是一樣的

    防火牆都是關閉狀態,RPC服務啟動狀態

    但是兩台win7之間的Msg指令就是會出現錯誤

    目標電腦 -> 我  

    >Msg * /server:192.168.1.21 TestMessage
    錯誤訊息:取得工作階段名稱時發生錯誤1825

    我 -> 目標電腦 
    >Msg * /server:192.168.1.23 TestMessage
    錯誤訊息:取得工作階段名稱時發生錯誤5

    2013年1月11日 上午 02:43
  • 我的測試中也有提到,只要帳號不同就沒辦法囉 :)

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    好用的微軟技術支援小工具
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2013年1月11日 上午 02:54
    版主
  • AskaSu前輩 您好

    哇...那這樣怎麼把訊息傳給不同電腦

    Win7也沒net send能用,那我程式就不知道該怎麼辦了

    XP用net send,Win7無法接收

    Win7用Msg,又無法傳出去,好像只能找第三方工具了


    安裝第三方軟體沒關係,但要用簡單的方法去調用 <—老闆的要求

    我找到的工具NetSend,調用方法也很簡單  shell("C:\Program Files\NetSend\netsend.exe /servername /message")

    但這套工具是模仿Message服務,Win7 -> XP 成功,但XP ->Win7 or Win7 -> Win7還是無法收到

    我現在手足無措了

    2013年1月11日 上午 05:35
  • 你用的 NetSend 工具頁面有提到:
    Note : NetSend can send messages but can't receive them. You should have proper software to be able to receive netsend messages.」

    該工具不負責接收,XP 會接收到訊息是因為內建了 Messenger 這個服務,但是 Vista 之後的沒有:
    「It can be one of the followind programs or services:

    • Our messaging software LanTalk XP / LanInfo XP, which is compatible with all versions of Windows operation system except Windows Vista, Windows 7, and any newer version.
    • Internal Windows service - Messenger in Windows NT, Windows 2000, Windows XP, and Windows Server 2003.」

    只能再找更好的工具了。 :)


    蘇老碎碎念
    資訊無涯,回頭已不見岸
    好用的微軟技術支援小工具
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2013年1月11日 上午 06:25
    版主
  • AskaSu前輩 您好

    我找到一篇文章局域网发送消息 msg取代net send 方法

    文章裡提到使用runas命令工具配合msg命令工具使用

    runas /user:MyDomain\MyUserName "msg * /Server:WorkServer2 Hello"

    於是我在本機新建了一個帳戶TestMsg

    測試目標由於Win7電腦有同事在使用,故先在XP電腦上建立TestMsg帳戶嘗試能否溝通

    試了幾次,都只有  瞬閃  一個命令提示視窗,但即使目標指向本機(192.168.1.21)也沒有訊息出現

    runas /user:WORKGROUP\TestMsg "msg * /server:192.168.1.21 TestMessage" 瞬閃視窗
    runas /user:PC21\TestMsg "msg * /server:192.168.1.21 TestMessage" 瞬閃視窗

    所以想請教前輩

    1.這樣的指令是不是以本機的<MyUserName>帳戶去執行Msg命令呢?
    2.<MyDomain>指的是 本機名稱 還是 工作群組名稱 呢?
    3.若與XP會瞬閃視窗是OS版本不同的關係,兩台Win7這樣子使用是不是能達到前輩上方回覆所測試的結果?(同帳號才能使用Msg互傳訊息)

    同事用Win7電腦會一直用到下班我無法做測試,冒昧麻煩前輩,真的對前輩不好意思


    • 已編輯 GISK 2013年1月11日 上午 08:55
    2013年1月11日 上午 08:46
  • 我早上再幫忙測了一下,一定要同帳號才能互傳訊息,
    譬如發送端是以 Peter 的帳號登入,接收端卻是以 Aska 帳號登入,
    那麼發送端一定要 Runas /user:aska "msg * /server:ip "test"",
    也就是要以 Aska 的身分發送訊息出去,
    那麼 Aska 端才會收到。

    至於你說的瞬閃視窗,我利用錄影的方式把錯誤訊息找出來,
    會出現「* does not exist or is disconnected」。

    其實假如你的環境是有加入網域的,
    問題應該就不會這麼複雜了。


    蘇老碎碎念
    資訊無涯,回頭已不見岸
    好用的微軟技術支援小工具
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    • 已標示為解答 GISK 2013年1月17日 上午 01:08
    2013年1月14日 上午 03:14
    版主
  • AskaSu 前輩您好

    十分感謝前輩撥空幫我測試並解答問題

    我嘗試下前輩的指令,出現了以下的問題

    >Runas /user:資訊 "msg * /server:192.168.1.21 "Test Message""

    會出現指令幫助視窗

    這是嘗試將訊息發送給我自己  登入帳號:資訊  IP位置:192.168.1.21

    下指令給目標Win7電腦也是這樣子呢

    另外,前輩所說的加入網域的意思是?

    我們公司的電腦都位在  192.168.1.XX  的IP位置,工作群組都是WORKGROUP

    這樣不是處在同網域嗎?


    我在本機電腦開了一個TestMsg帳戶,嘗試發訊息給本機TestMsg帳戶

    ----在TestMsg帳戶底下下了指令 >runas /user:PC21\TestMsg "msg * /server:192.168.1.21 Test Message",輸入密碼

    成功收到訊息

    ----切換使用者為  資訊

    下指令 >runas /user:PC21\TestMsg "msg * /server:192.168.1.21 Test Message",輸入密碼

    瞬閃視窗,切換至TestMsg帳戶,沒有收到訊息

    使用>query session 顯示TestMsg帳戶已斷線

    • 已編輯 GISK 2013年1月14日 上午 04:08 補充
    2013年1月14日 上午 03:48
  • 不是的,同網域是指公司所有電腦有加入微軟的 Active Directory 服務之中,
    你講的 192.168.1.0/24 正確來說應該是指處於同一「網段」。


    蘇老碎碎念
    資訊無涯,回頭已不見岸
    好用的微軟技術支援小工具
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2013年1月14日 上午 03:58
    版主
  • AskaSu前輩 您好

    大略看了一下Active Directory服務與Google一下相關資訊

    似乎建立AD網域後需要使用者改變一些東西,還要進行設定與學習管理知識

    由於所屬公司只有10人的環境與老闆保守的風格

    對於新知識的使用與舊轉新的觀念,老闆接受度並不高,不希望做太大的變動

    所以我還是只能慢慢去找尋並解決這些問題

    還在努力找資料與測試,感謝前輩的鼎力協助

    2013年1月14日 上午 06:32
  • 這問題我也昨天遇到, 花了大半天研究, 整理如下,希望對你有幫助。

    MSG使用方式整理

    使用方式:

    MSG 收訊電腦帳號 or session ID /Server:收訊電腦名稱或IP 訊息

    條件:

    收送訊的兩台電腦需在同一domainworkgroup

    測試結果:

     1.收訊端電腦要做下列設定

    (1)  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer

    allowRemoteRPC=1

    (2)  fDenyTSConnections=0  (收訊端電腦是win7 or win8要注意這個是否為0)

        2.發訊端電腦

    (1)  執行rundll32.exe keymgr.dll, KRShowKeyMgr,將登入收訊端電腦的帳號密碼打上去 (發訊端電腦是 windows 2008 Srv)

    (2)  sg administrator /server:10.100.1.24 test

    (3)  sg 0 /server:10.100.1.123 test  (收訊端電腦是XP時,給session id0console)

    (4)  Msg * /server:10.100.1.123 test  (給收訊端所有登入session id)

    • 已提議為解答 merphy2007 2013年1月15日 上午 06:48
    • 已標示為解答 GISK 2013年1月17日 上午 01:08
    2013年1月15日 上午 06:47
  • merphy2007前輩 您好

    非常感謝前輩詳細的資訊

    已經成功把訊息傳送給目標電腦了

    >runas /user:<UserName> "msg * /server:<IP> <Message>"

    win7 -> win7 成功

    win7 -> XP 成功

    XP -> win7 失敗

    不知道Session ID應該怎麼看呢


    • 已編輯 GISK 2013年1月22日 上午 08:35 XP -> win7 失敗,我打相反了
    2013年1月16日 上午 05:26
  •  sg 0 /server:<IP> <Message>  (收訊端電腦是XP時,給session id0console)

     Msg * /server:<IP> <Message>  (收訊端電腦是XP時,給session id)

    2013年1月16日 上午 10:49