最近在編寫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
新聞熱點
疑難解答