How do I use msg.exe to send messages to a XP PC?


Recommended Posts

How do I use msg.exe to send messages to a XP PC? From the looks of it, both of them are in the workgroup WORKGROUP but I send to all the users and I they dont receive it (I do).

Most computers have this feature turned off by default as it was a security risk.

I think it got turned off around XP SP2 so you'd need to manually turn it on again in order for your messages to get through.

msg.exe is more for sending messages to terminal sessions on the same machine, it is not really designed to mass message people.

You need to know the username your wanting to send to and the server they are on.

where with net send you could mass send to all computers on the network, etc.

msg

Send a message to a user.

Net send

Sends messages to other users, computers, or messaging names

on the network. The Messenger service must be running to receive messages.

net send

* Sends the message to all the names in your group.

/DOMAIN[:name] Sends the message to all the names in the

workstation domain. If name is specified, the

message is sent to all the names in the specified

domain or workgroup.

For you to send a msg to someone you would need to know their username and the machine they are on.

msg username /server:computername

If you want to be able to send mass messages or just have to put in the computer OR username the messenger services has to be running on the target machine - and of course for any of this to work any software filewalls running would have to allow for it.

Not sure where you go the idea msg is not available prior to vista.

C:\>ver

Microsoft Windows XP [Version 5.1.2600]

C:\>msg /?

Send a message to a user.

MSG {username | sessionname | sessionid | @filename | *}

[/sERVER:servername] [/TIME:seconds] [/V] [/W] [message]

username Identifies the specified username.

sessionname The name of the session.

sessionid The ID of the session.

@filename Identifies a file containing a list of usernames,

sessionnames, and sessionids to send the message to.

* Send message to all sessions on specified server.

/SERVER:servername server to contact (default is current).

/TIME:seconds Time delay to wait for receiver to acknowledge msg.

/V Display information about actions being performed.

/W Wait for response from user, useful with /V.

message Message to send. If none specified, prompts for it

or reads from stdin.

C:\>ver

Microsoft Windows 2000 [Version 5.00.2195]

C:\>msg

Send a message to a user.

MSG {username | sessionname | sessionid | @filename | *}

[/sERVER:servername] [/TIME:seconds] [/V] [/W] [message]

username Identifies the specified username.

sessionname The name of the session.

sessionid The ID of the session.

@filename Identifies a file containing a list of usernames,

sessionnames, and sessionids to send the message to.

* Send message to all sessions on specified server.

/SERVER:servername server to contact (default is current).

/TIME:seconds Time delay to wait for receiver to acknowledge msg.

/V Display information about actions being performed.

/W Wait for response from user, useful with /V.

message Message to send. If none specified, prompts for it

or reads from stdin.

what command are you using? As I stated you need to send to the username and the machinename

For example.. From my desktop I will send a msg to an account logged into a server.

C:\>msg tsadmin /server:tsbesvsan01

Enter message to send; end message by pressing CTRL-Z on a new line, then ENTER

testing msg 123456

^Z

here is the message that account sees.

post-14624-1232642989.jpg

Are you running any software firewalls between the machines? Either on your client or on the machine your wanting to send to?

No msg is not a pointer to net send.. They are different methods. And no the messenger service does not need to be running for msg to send or recv messages. For net send yes, for msg no.

  • 2 weeks later...
Gotcha.

Ok, I'll help and also ask a question.

To recap...MSG.EXE is completely seperate from NETSEND.

It does NOT need the messenger service to be running and is available on XP and Vista.

For it to work on XP over a domain you must add a registry key.

HKLM\System\CurrentControlSet\Control\Terminal Server

Dword=AllowRemoteRPC

Value=1

You don't have to know the username...just the computer name. You can place an "*" in place of the username to send to all session that are logged into a specific computer at once. So for any normal workstation it would just be one user.

Syntax example sending to a computer called "TestComp01" with a message of "Hi, this is a test message."

msg /server:TestComp01 * Hi, this is a test message.

You can also add the switches of /v /w between * and the message to give you a read out of when it was sent and when the user presses "OK".

Now, to my question to see if anyone knows.

I have written a GUI so this is easier to use for my users at my work. All the users in my department are Admins on all the boxes company wide so we've never had a problem sending messages to each other as needed.

Now another department is wanting to use MSG.exe but they are not admins. I have tried sending test messages from their computers with their credentials but it doesn't go through. I am able to send to them but not the other way around.

Anyone know a way around this or do you HAVE to be an admin of the box you are sending to?

  • 1 year later...

Now, to my question to see if anyone knows.

I have written a GUI so this is easier to use for my users at my work. All the users in my department are Admins on all the boxes company wide so we've never had a problem sending messages to each other as needed.

Knightro2,

Is there any way that you can post a copy of the GUI you created?

Kinda OT: Back when I was a nooblet teenager I got in trouble for running a python script that looked a little something like this, on an XP network that didn't have SP2 yet or the messenger service disabled.

import os
while 0==0:
 	os.system("net send * The problem is I can do this without your permission!")

There weren't very happy with having to click OK a few thousand times...

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • BATorrent 3.0.2 by Razvan Serea BATorrent is a lightweight, open-source BitTorrent client built with modern C++ and Qt 6, offering a clean, fast, and privacy-focused alternative to traditional torrent apps. It supports magnet links, .torrent files, resume data, sequential downloading, per-file priorities, and even imports from qBittorrent. Power users benefit from integrated RSS auto-download with regex filtering, duplicate detection, and automatic tracker lists from Stremio. Streaming is seamless thanks to auto-detected players like VLC and IINA. BATorrent includes robust VPN tools—interface binding, auto-detection for WireGuard-based services like Mullvad and NordLynx, kill switch, proxy support, and IP filtering. A full WebUI enables remote control, while integrations with Plex, Jellyfin, and Emby automate library updates. With themes, speed scheduling, system-tray alerts, and cross-platform support for Windows, Linux, and macOS, BATorrent delivers a polished, high-performance torrenting experience. BATorrent features: Core .torrent file and magnet link support Resume data — picks up where you left off after restart Import torrents from qBittorrent Create .torrent files from any file or folder Sequential download mode Per-file priority control (skip, low, normal, high) Seed ratio limits with auto-pause DHT, PEX, UPnP, NAT-PMP RSS Auto-Download Subscribe to RSS feeds — automatically download new torrents as they appear Regex filters — match only what you want (e.g. 1080p|720p, S01E\d+) Per-feed settings — custom save path, check interval (5–1440 min), enable/disable Auto-download — matched items are downloaded automatically in the background Supports magnet links, .torrent URLs, and tags Tray notifications when items are auto-downloaded Duplicate detection — never downloads the same item twice Stremio Stremio Addon System pre-installed — works out of the box Auto tracker list from ngosang/trackerslist Streaming Play while downloading — stream video files before the download is complete Supports mp4, mkv, avi, mov, wmv, flv, webm, m4v, ts Auto-detects installed players (VLC, IINA, system default) VPN & Privacy Interface binding — lock torrent traffic to a specific network interface (e.g. tun0) Auto VPN detection — identifies VPN interfaces (tun, tap, WireGuard, Mullvad, NordLynx, ProtonVPN) Kill switch — automatically pauses all torrents if the VPN interface drops Auto-resume — resumes only the torrents paused by the kill switch when VPN reconnects Proxy support — SOCKS5 and HTTP proxy with optional authentication IP filtering — load P2P blocklists to block unwanted IP ranges Protocol encryption (enabled / forced / disabled) WebUI Remote management — control torrents from any browser at http://localhost:8080 REST API with JSON responses Add torrents via magnet link or .torrent upload Pause, resume, remove torrents remotely View peers and files per torrent Dark theme matching the desktop app HTTP Basic Auth with SHA-256 password hashing Configurable port and remote access (localhost vs 0.0.0.0) Interface 3 themes: Dark, Light, Midnight (bat/vampire aesthetic) Real-time speed graph Detailed panel with tabs: General, Peers, Files, Trackers Filter bar: search by name, filter by state (Active, Downloading, Seeding, Paused, Finished) Drag & drop .torrent files and magnet links Drag & drop reorder in torrent list System tray with notifications (download complete, kill switch events, RSS auto-downloads) Splash screen with bat animation Bilingual: English and Portuguese (BR), auto-detected from system locale Bandwidth Scheduler Alternative speed limits — set different download/upload limits on a schedule Time range — configure active hours (e.g. 01:00 to 07:00), supports overnight ranges Per-day control — choose which days of the week the schedule applies Automatically switches between normal and alternative speeds Media Server Integration Plex — automatically trigger library scan when a download completes Jellyfin / Emby — same automatic library refresh via API Configure server URL and authentication token/key in Settings System Cross-platform: Windows, Linux, macOS Auto-shutdown — automatically shut down PC when all downloads complete (60s cancellable countdown) Auto-update system (AppImage on Linux, installer on Windows, DMG on macOS) CLI arguments: pass .torrent files or magnet: URIs directly Keyboard shortcuts: Space to toggle pause, Ctrl+A to select all, Ctrl+O to open BATorrent 3.0.2 changelog: Phone pairing & WebUI The browser WebUI was reskinned to match the desktop app — same dark palette, Inter font, flat surfaces, the real BATorrent logo (it was a random bat before), and a proper magnet icon. It now looks like the same product, not a separate dashboard. Pairing is one tap and zero typing: the generated WebUI password is now copyable, and the QR code carries the credentials — scanning it from your phone logs straight in (no typing the IP or password), then drops the credentials from the address bar. Search Two new providers: RuTor (CIS sources, no login, via a public TorAPI relay) and Torrents-CSV. Results are sorted by seeders (healthiest first), and each search now times out after 15 s so one dead provider can't hang the UI. Files & trackers Per-file priority is back: right-click a file in the detail panel to set Skip / Low / Normal / High. Rename an individual file inside a torrent (double-click or the file menu), separate from renaming the torrent. Remove a tracker from a torrent (the ✕ on a tracker row); adding was already there. Smart Paste on Ctrl+V — paste a magnet, a 40-char info-hash, or a .torrent URL straight from the clipboard and it's added immediately (text fields still paste text normally). Covers & titles Anime fansub naming ([Group] Title - NN) now resolves to the right show. Audio channel layouts in titles (DDP5.1, 7.1, …) are stripped so they don't pollute cover matching. Under the hood The legacy QWidget interface is gone. QML had been the only UI since 3.0.0 (reachable old code lived behind a hidden --legacy flag); with parity confirmed, the entire QWidget layer — main window, every dialog, the theme manager — was removed (~13,400 lines). The four restored actions above were features that backend already supported but the QML port had never wired. macOS: the WebUI password hash moved out of the keychain into app settings, so launching the app no longer pops a login-keychain password prompt on unsigned builds. The actual password still lives in the keychain. Cleanup: ~400 orphaned translation strings and a batch of dead code removed; internal duplication collapsed; an ARCHITECTURE.md added for contributors. Unit / security / memory tests and the ASan/UBSan/TSan sanitizers stay green. Download: BATorrent 3.0.2 | 30.5 MB (Open Source) Download: BATorrent Portable | 42.3 MB Links: BATorrent Website | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • How about a global switch to turn the awful things off instead of a registry hack? Then everyone wins.
    • This doesn't strike me as so shocking when... " IT admins do have some control over this rollout. If they choose to opt out, devices in their tenant won't automatically get the dreaded Copilot app"
  • Recent Achievements

    • Mentor
      grik went up a rank
      Mentor
    • Dedicated
      JKR earned a badge
      Dedicated
    • One Year In
      CHUNWEI earned a badge
      One Year In
    • Conversation Starter
      FBSPL earned a badge
      Conversation Starter
    • Week One Done
      I2D earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      468
    2. 2
      PsYcHoKiLLa
      257
    3. 3
      Skyfrog
      79
    4. 4
      ATLien_0
      60
    5. 5
      FloatingFatMan
      60
  • Tell a friend

    Love Neowin? Tell a friend!