Update: If you receive “access denied” when attempting to use msg, do the following: Terminal Services Configuration (tscc.msc) -> Open up the properties of the RDP-TCP connection object -> Permissions tab -> Advanced -> Edit the entry you are interested in changing. Thanks to TP at winserverkb.com for that info.
Update 2:Check out Adriano’s comment below, it’s pretty thorough. Thanks Adriano!
Today, I needed to net send a message to myself, but soon realized that it disappeared and is no longer supported in Vista. Then I found a a post on MSDN tipped me off to use msg instead. Msg is usually used for sending messages to terminal services users but, remembering that the console session has an ID of 1, I decided to try sending a message to the console user. As it turns out, msg 1 test worked both locally and remotely in Vista.
Then, I tried running the command on an XP machine, only to realize that XP’s terminal services console ID was 0 and not 1. In order to msg the console in XP, I had to run msg 0 test. So what is session 0 in Vista? Well, according to the query session command, “services” use the ID of 0 in terminal services. Whoops. It appears that the best way for this to work across XP and Vista machines would be to use “msg console test” or “msg * test” or “msg username test“. If you’d like to message remote machines, you can do so by pointing to a file that contains the names of multiple machines or by using the /SERVER switch ie. msg /SERVER:computername console “Message goes here”.
If you need additional options or help, check out the TechNet article for more information.
Update: For those of you receiving the error message “error 5 getting session names”, this appears to be a permissions error. Unlike “net send,” you must be on the same Windows domain to send msgs to other computers. This is a good thing — it means that msg is not prone to being abused by spammers.