最近在編寫FTP上傳數據的批處理時,需要用到局域網內傳輸數據來提示錯誤,突然想起忘了N久沒用的命令(net send), 結果在win7 下cmd運行net send /? 運行失敗。經過百度大神的搜索,原來從vista之后net send 命令被微軟取消了,再次百度,WIN 7局域網內發送消息可以使用MSG 命令。在壇子里找了好久也沒找著真正的使用方法,就自己百度,google 終于搞定了,發出來讓大家看下。。。。。
MSG 系統自帶使用幫助
C:\Windows\system32>MSG
將消息發送給用戶。
MSG {username | sessionname | sessionid | @filename | *}
[/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]
username 標識指定的用戶名。
sessionname 會話名。
sessionid 會話 ID。
@filename 識別這樣一個文件,該文件含有將所發消息發送到的用戶名、會話名和會話標識號的列表。
* 給指定服務器上的所有會話發送信息。
/SERVER:servername 要聯系的服務器(默認值是當前值)。
/TIME:seconds 等待接收器確認消息的時間延遲。
/V 顯示有關執行的操作的信息。
/W 等待用戶的響應,跟 /V 一起有用。
message 要發送的消息。如果沒有指定,發出提示,或者從 stdin讀取。
以下代碼均在開始---執行------CMD內測試。
測試條件:本機IP:192.168.1.200 測試電腦IP:192.168.1.201 在同一局域網內,并且可以ping通。
1.根據以上MSG使用方法進行本機調試驗證。 MSG /server:192.168.1.200 * "Hello" ----------------->>>>> 運行成功,彈出消息對話框。
2.然后再進行局域網內兩臺電腦通信驗證。 MSG /server:192.168.1.201 * "Hello" ---------->>>>> 運行失敗,報錯。獲取會話名稱時的錯誤 1722。
3.再次百度,在CSDN的一個帖子上有一個辦法,CMD內regedit修改注冊表HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\TERMIMAL SERVER內的ALLOWREMOTERPC的值修改為1 (默認為0),因為在XP系統下net send 命令需要開啟Messenger信使服務,但是在win7內沒有此項服務,所以需要修改注冊表來使win7系統可以局域網內發送信息,可XP類似。
4.此時驗證還是失敗,把測試電腦和本機的防火墻全部關閉,把測試電腦的注冊表同上也修改OK, 再次驗證 MSG /server:192.168.1.201 * "Hello"運行失敗,報錯 192.168.1.201不存在或連接失敗。。。最后找來找去,用GOOGLE 搜索發現了最終的答案 。。打開控制面板,雙擊憑據管理器,點擊添加windows憑據,第一行寫測試電腦的IP地址,第二行寫測試電腦的用戶名,第三行寫測試電腦的密碼,重啟電腦,運行--cmd-------MSG /server:192.168.1.201 * "Hello" ------------->>> 運行成功。。。
Google 搜索的最終答案(英文的,有點英文基礎可以看懂的) 鏈接:http://social.technet.microsoft.com/Forums/windows/en-US/344aa708-5477-46f9-be4f-ad8b3b2348b0/sending-a-message-to-win-7-host-with-msgexe?forum=w7itprogeneral
1 go to credential manager
2 click add a windows credential
3 type the name of the computer, username and password of the computer that you are trying to contact
4 computers that you are trying to contact most be in the same network as you.
good luck it took me months to get it properly working
在以上的學習過程中,發現也可以,cmd 內輸入\\192.168.0.201 然后回車,彈出對話框輸入帳號和密碼,
下面有一個勾選項,為記錄帳號和密碼,勾選此項,憑據管理器內自動添加對應的windows憑據。
下面是其他網友的補充
向用戶發送消息。信息會以提示框彈出
MS-DOS命令語法
msg {UserName|SessionName|SessionID|@FileName|*} [/server:ServerName] [/time:seconds] [/v] [/w] [message]
MS-DOS命令參數
UserName
要接收消息的用戶的名稱。
SessionName
要接收消息的會話的名稱。
SessionID
其用戶要接收消息的會話的數字 ID。
@FileName
標識包含有待接收消息的用戶名、會話名和會話 ID 列表的文件。
*
將消息發送給系統中的所有用戶。
/server:ServerName
指定要接收消息的會話或用戶所屬的終端服務器。如果不指定,/server 會使用您當前登錄的服務器。
/time:seconds
指定您發送的消息在用戶屏幕上顯示的時間。一旦到期,則該消息從屏幕上消失。如果沒有設置期限,則該消息將一直保留在用戶屏幕上,直到用戶看見這條消息并單擊“確定”。
/v
顯示關于要執行的操作的信息。
(即輸出類似于
"將消息發送到會話 Console,顯示時間 60"
"發送到會話 Console 的消息收到用戶響應"
等信息, 表示操作過程和結果的信息給輸出來)
/w
等待來自用戶的、指出該消息已收到的確認信息。如果用戶不立即響應,則使用 /time:seconds 參數避免可能出現的長時間延遲。將此參數與 /v 一同使用也很有幫助。
message
待發送消息的正文。如果沒有鍵入任何消息,則系統將提示您輸入消息或從標準輸入 (STDIN)中讀取該消息。要發送包含在文件中的消息,請鍵入小于號 () 后接文件名稱。
/?
在命令提示符顯示幫助。
MS-DOS命令注釋
如果不指定該用戶或會話的名稱,則 msg 將顯示錯誤消息。指定會話的名稱時,必須是有效名稱。
用戶必須有發送消息的權限才能發送消息。
MS-DOS命令范例
要向用戶 MIKES 的所有會話發送標題為 Let's meet at 1PM today 的消息,請鍵入:
msg MIKES Let's meet at 1PM today
要向會話 MODEM02 發送相同的消息,請鍵入:
msg modem02 Let's meet at 1PM today
要向會話 12 發送消息,請鍵入:
msg 12 Let's meet at 1PM today
要向包含在文件 USERLIST中的所有會話發送消息,請鍵入:
msg @userlist Let's meet at 1PM today
要向已登錄的所有用戶發送消息,請鍵入:
msg * Let's meet at 1PM today
要在確認超時(例如 10 秒)限制內向所有用戶發送消息,請鍵入:
msg * /TIME:10 Let's meet at 1PM today