Mark Jacobs' Free 32-bit Windows Software

Contact me on my email submission form for queries about any of the following software. None of these programs install anything to your PC - they do not write anything to your registry (with the obvious exception of MJ Registry Watcher) and they are all self-contained .EXE files - you simply make an installation directory for them, and unzip them into, and run them from there. They were all developed with Borland C++ Builder Professional, and they are free of charge. If you feel generous, then you can donate something by clicking on this Paypal button :-

MJ Software

MJ Registry Watcher - Version - Last Update 11/11/2015
MJ Emails - Last Update 5/12/2016
MJ News Reader - Last Update 18/11/2016
Maths Penknife - Last Update 18/11/2016
Grapher - Last Update 18/11/2016
MJ Player - Last Update 18/11/2016
MJ Zoomer - Last Update 18/11/2016
MJ Browser - Last Update 18/11/2016

MJ Registry Watcher (Version - Zip Size 3.99M)  

** Latest Features : Service Mode, Process Launch Monitoring, DLL Injection Detection, EMailing of Alerts, Quarantine, Registry Backup **
MJ Registry Watcher is a simple registry, file and directory hooker/poller, that safeguards the most important startup files, registry keys and values, and other more exotic registry locations commonly attacked by trojans. It has very low resource usage, and is set to poll every 30 seconds by default, although you can adjust this to anywhere between 0 and 9999. A configuration file stores all your settings for future use. MJRW not only polls the system, but it also hooks it, so that most changes to keys, files and directories are reported instantaneously. Key deletions are still caught by the polling loop though, since they cannot be hooked. Exactly which keys and files are protected can be completely configured by the user, although the sets I supply with MJRW will cover most standard PCs.

There is an additional automatic registry backup system that takes a snapshot of the entire registry about every 28 days and stores it in the directory MJRegBackup. The filename is of the form MJRegBackup_yyyymmdd.reg where yyyy is the year, mm is the month and dd is the day. The last 15 snapshots are kept. They can be restored from a menu option : this can be used in Safe Mode as administrator to rescue a non-booting PC. It should only be used as a last resort : it saved my PC when I accidentally knocked out the video drivers during an over-zealous session in the registry, cleaning out "LogMeIn"!

To install it, extract the files with pathnames, and you'll have a self-contained .exe file with a small help text file, the keys and files lists, and a couple of exclusion files in the MJRegWatcher directory. Launch RegWatcher.exe and then, use the Options, Settings, Automatic Startup Options screen to install it either just for the current user, or for all users. From this screen, you can also choose which key set to start it up with, or you can uninstall it. Softoxi have also done a brief video tutorial in installing and exploring MJRW.

Please note that under Vista and later, MJRW may need to be configured with administrator privilege to write to the registry. To do this, go to the RegWatcher.exe file in Explorer, right-click to Properties, and go to the Compatibility tab. Check the admin box. Whenever the PC is restarted, you may have to OK MJRW to start with admin rights. Unless you disable UAC, the only way round this is to use the task scheduler to launch MJRW with administrator rights and set it to run at log on.

There is also a service mode which is documented in the help file as follows :-


You will need administrator access rights to set up the MJ RegWatcher Service. You can use the item under the Options menu to "Install MJ RegWatcher Service". REMEMBER TO UNINSTALL THE INTERACTIVE MJ REGISTRY WATCHER (using Options, Settings, Automatic Startup Options or disabling the scheduled task or Startup menu item) before you start using the service since they cannot be run simultaneously. Once interactive MJRW is uninstalled, and the service has been installed, you can start the service by running services.msc (or Administrative Tools, Services from Windows) and going to the entry "MJ RegWatcher Service Stub" and starting it. Once running, it will continue to run until the PC is shutdown, surviving logins and logouts, and automatically starting up when the PC is started (and before anyone logs in). If someone tries to terminate it without stopping the service stub, it will be re-launched automatically.

To remove the service, you have to stop the service running using services.msc (or Windows service manager with Administrative Tools, Services). Navigate to "MJ RegWatcher Service Stub" and stop it. Then launch interactive MJ Registry Watcher (by running RegWatcher.exe from the installation directory) and choose "Uninstall MJ RegWatcher Service" from the Options menu. REMEMBER TO INSTALL THE INTERACTIVE MJ REGISTRY WATCHER (using Options, Settings, Automatic Startup Options or enabling/creating the scheduled task or Startup menu item) if you want MJ Registry Watcher interactive mode to start up automatically when someone logs in.

The service has some important differences from the interactive mode :-
  1. Only Accept and Reject modes are supported. Prompt mode defaults to and sets Accept mode.
  2. There is no tray icon or visible application interface. It runs invisibly.
  3. Keys and filespecs prefixed with $ to always prompt, will instead Accept or Reject depending on which mode is set.
  4. The configuration of the service is taken from that used by the normal interactive configuration.
  5. Only one instance of the service can be run at a time, and it cannot be run at the same time as an interactive session.
  6. To be informed about alerts while the service is running, you can :-
         a) Run the application mjrwmon.exe from the installation directory to watch the service
         b) Use the alert sound set in interactive mode
         c) Use the email settings set in interactive mode
         d) Keep a view open and refreshed on the log file mjregwatchkeys.log
If a trojan attempts to change your startup settings, you will be alerted, and you can prevent any changes being made. You can also configure MJRW to email the alert details to, for example, an administrator. It is fully configurable as to what keys and files are monitored, so, if you have a vested interest in protecting your file association for the mailto protocol (your default emailer), so that your preferred app loads them, and something else is trying very hard to undermine this association (Outlook for example), this will popup, offering to stop a new association attempt, after Outlook had loaded, say. The key that stores this association is hkey_lmus\software\classes\mailto\shell\open\command, and you will find that all such keys are covered by the wildcard key hkey_lmus\software\classes\???\shell\???\command. This means that all your file associations are protected. All the system files are also monitored, including system dlls, executables and driver files. If there is a change to any of these files, an alert is recorded as to what files have changed and you may be optionally informed with an on-screen alert. However, changes to the files cannot be undone.

It assumes write access and directory create rights for the path the .exe file sits in (ie. wherever you installed it). The default set of keys and files should ensure that nothing gets run at startup without you knowing about it, and important boot up files don't get changed behind your back. When monitoring, keys are opened in Read-Only mode, and the application only needs Write Registry access when it has detected a change. It keeps a log of any suspect activity, and displays any such information for the current session in the bottom panel. A log file has this appended to it and can be viewed by pressing the Log button. The file keeps a complete history of alerts.

You can also visit a Wilders Security forum thread dedicated to the formative years of this application. My moniker is Graphic Equaliser. The thread started November 13th 2004 and finished on June 29th 2010.

The default set of keys was chosen to balance security against intrusiveness. However, you can experiment by selecting different security levels on the Options menu, and see the impact on PC performance. The higher you set it, the better the coverage, and also, the more warnings you'll get (especially with the openwithlist keys monitored). This list is based on some invaluable work done by Hojtsy documented in Hojtsy's compiled list of the security hotspots in the registry. It also has stuff from the Gladiator AV Forum and Silent Runners' Launch Points List.

Back to the Top

MJ News Reader (364K)  

is a simple news reader with the added advantage that you don't need to set up accounts, and it writes nothing to your hard disk except for a couple of small text configuration files, which simply list your preferred news servers and your identity when sending replies. This simple .exe file will allow browsing of, and, usually, postings to newsgroups. Searching and thread traversal are catered for with a unique interface design. Both headers and message bodies can be searched for wildcarded text or even regular expressions (prefix with mjre: to announce a regular expression match). The Message header "References" is maintained when replying to threads. It is an adaptation and enhancement of the Netmasters Fastnet news reader demo program.

Back to the Top

MJ Calculator + Font Previewer + Regular Expression Tester + File Getter + IP Address Tracer and Raw Connect + VfW + Anagram/Crossword Solver (1.27M)  

is a utilities program-gone-mad. It can list all legal WAVEFORMATEX control blocks for the PC it is running on (right-click the little globe button on the right-hand side of the window to activate report procedure), and do TCP/IP connections to any port and ip address, if allowed. It can do DNS and Mailbox (MX) lookups on any host or IP address. You can "talk" to your POP3 server if you know the POP3 protocol, for example. Give it a URL and it will get whatever is there, into a file on your PC with the same name, but in the directory this program runs in. It factorises numbers, has a calculator, VU meters for the currently-selected input source, and a bonkers colour selector. Some of the functions are only knowable from reading the pop-up hints on certain controls. For example, there is an NIC information getter, but I'll leave that for you to find. The Middle Window is an anagram and crossword solver, and also does the "Numbers Game" in Channel 4's Countdown (you enter 6 numbers and a target, separated by spaces and press Enter). It is also useful in Scrabble games (but don't tell my Dad!).
  • framoligen,s will give all words from these letters for Scrabble
  • framoligen,8 will give all words from these letters with 8 letters or more
  • dnrefainlto,8,9 will give all words with between 8 and 9 letters
  • b*n??t will give all words starting with b and ending in n--t (eg. blanket)
  • j ep,4 will give jape, jeep, and jupe
  • 4 6 8 3 7 2 275 might give 3+4*(8*7+2*6) = 275 or 3+2*8*(7+6+4) = 275
    * means any sequence of letters and ? means any single letter
    Press Alt-D to lookup selected word in the dictionary, Ctrl+F to search the text, and F3 to find again.

    Back to the Top

    Graph Plotter (377K)  

    with screenshot and sample graphs on my maths page.

    MJ Player (1.24M)  

    is a lean and mean media player.

    It can play CDs and look up the CD information from It has very low resource usage. When playing MP3 files, it will display the artist, title, album, year and track number in the centre of the player window, if these exist in the tag for the MP3 file. You can also easily launch the Windows properties information for any file it is playing.

    DJ Mode

    It can optionally introduce each song using the speech engine in Windows XP and above, by checking the "DJ" checkbox. You can configure the introductions with a simple text file. The MJIntros.txt file that comes with MJPlayer is a starting point for you to "build" your own DJ. You can access this file by right-clicking on the DJ checkbox. A line from this file is picked at random to announce each track. Some examples of "announcements" that come pre-defined for MJPlayer (the # sign at the start of each line means delay playing the track until the announcement is over, otherwise the announcement talks over the track start) :-
    #%artist% told me that %random% is %random%. oh well, here's %song%
    #Wonderful %random% %random% by %artist% with %song%
    #Let's go back to %year% with %artist% playing %song%
    #%artist% came round my house and played %song% in my %random% %random%
    #Coming up next is
    #Party out with
    #Freaky deaky %random% %random% from
    #I came in my pants when I first heard
    #%song% by %artist% was my gateway into drugs
    #Hedonistic happiness from
    #Genius %random% %random% from %artist% with %song% from the album %album%
    #And now %random% with %random%. Kidding! It's
    #When I hear %song% by %artist%, I have to go off and sing it from the rooftops
    #Here we go with
    #It makes you realise how lucky you are to be a lyve.
    #Wow, next up is
    #Now some %random% with %random%. Nah! Here's
    #How about %random% with %random%? Or
    #We've got you
    #Tremendous work from
    #Terrific %random% %random% from
    #Great music from
    #Sod off! It can't be %artist% with %song%, can it?
    #Shit hot noise from
    #Fucking massive %random% %random% from
    #Now it's time for
    #Top notch %random% %random% by
    #It had to happen. It's
    #Incredible %random% %random% from
    #We're on a roll with
    #Wonders will never cease. It's
    #Excellent %random% %random% from
    #Marvellous %random% %random% by
    #Gitting ada, it's
    #You'll cack your pants with
    #You're shitting me.
    #Trance out with
    #It's here. It's now. It's
    #Very rare and very hip. It's
    #This is the only station where you'll hear
    #Melodic and beguiling. It's
    #A %random% %random% from
    #Now for a delicate %random% by
    #Shy sir, ezz ist
    #Maird, say
    #Stay cool with
    #Good god, it's
    #Hair-raising %random% harmony by
    #Groove out with
    #We've got the best %random% from %random%. We've got
    #I saw %artist% lyve and they were %random% %random%. Here they are with %song%
    #Utterly %random%, and %random%,
    #More phenomenal %random% %random% now from
    #Monumental %random% %random% with
    #Get off your napper with
    #Phantasmagorical %random% from
    #Well, I never did. What a turn up for the books. Here's %artist% with %song%
    #Quality %random% %random% from
    #Exceptional %random% %random% from
    #%artist% phoned me to tell me to play %song% from %year% or they'd cook my %random%!
    If there is no mnemonic %artist%, %song%, %album% or %year% in the announcement, it puts "%artist% with %song%" on the end of the announcement for you. For example, it might say "Top notch tune by Led Zeppelin with Dancing Days". Where such a mnemonic exists, it will substitute the relevant information into place and say that. For example, it might say "I saw Magazine live and they were incredible. Here they are with Parade".

    To change or edit the intros, simply right-click on the DJ checkbox. There is no limit to the number of different intros you can have in the intros file. You can also have a very long intro as long as it is all on one line. When a new song is about to start, an intro is taken at random from the current intros file and used to introduce the track. The voice is configured from the Speech applet in Control Panel. MJ Player tries to make the voice randomly intonated to "humanise" it a bit. Have fun inventing your own DJ! If you haven't got it already, there are 2 extra voices for XP with the SAPI 5.1 redistributable   (10 MB). If there is more than one voice installed on the PC, the DJ's voice is changed every 20 minutes.


    By checking the "Jingles" checkbox, you can intersperse jingles between tracks. Simply make a sub-directory off the MJPlayer directory called "Jingles" which has as many jingle sound files as you like. It selects three jingles at random to play when a track has finished, unless the "Loop" (loop the current track) checkbox has been checked. For example, if you had installed mjplayer.exe into a directory c:\mjapps\mjplayer, then the jingles should go into c:\mjapps\mjplayer\Jingles

    Other features

    It also has an infinite loop mode, with a seamless loop point for WAV files. It can play all Windows compatible formats that you have installed. If you want codecs to play MP4, DVD and FLV file formats, go to Edskes Mirror and download K-Lite full codec pack. Install with the "Lots of Stuff" option instead of "Default". MJ Player may fail to play FLV. If so, use Media Player Classic, which is installed with these codecs. If you want Quicktime and Realmedia formats, go to Quicktime and Real Alternatives and download and install the latest Quicktime Alternative and Real Alternative offerings from there. After you have installed them, you should be able to play MOV, QT, RAM and RM files on your computer with the player. If you can't, you'll need to add a couple of strings to the registry at location HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MCI Extensions. I added strings called mov, rm, and ram, and set their strings to MPEGVideo. The player will now play these extra formats and you no longer need Quicktime player with its iPod adornments, or Real Player with its snoopy habits. The 2 black buttons on the end can step back and forth by a fixed amount of milliseconds, which you can set as low as 1ms, so you can frame-step through video sequences, for example. The slider control shows where you are in the current track, and you can slide it to where you want to hear from in the track, and play from there. You can record from your soundcard in all the formats your computer has codecs for. Here is a small help section (viewable by right-clicking the "Show Info" button) :-
    mjplayer directory -r		will load a playlist with all sound files in directory
    			(and subdirectories), randomise the playlist, then play it.
    mjplayer -p		will play the last playlist you used,
    			from the last track and position you were on.
    mjplayer -p -r		will play the last playlist you used in a random order.
    The Record button can be used when nothing is playing. You enter a filename
    which is given a .wav extension, and choose a sound format. It will then start
    recording. You can press Stop to stop recording and choose whether to save it, or
    you can press record again to stop recording and automatically save it.
    You can add to the playlist either while the player is playing, or when it is stopped.
    If it is stopped, the playlist can be restored to its original position by clicking the
    "Played" label, or you can load the playlist before this one by right-clicking on it.
    To start a fresh playlist, you should clear the current one by right-clicking
    the Open Media File button before using it to open more files.
    To save the current playlist, click the "Of" label. If you want to restore
    the last saved playlist, right-click the "Of" label, when the player is stopped.
    DJ Mode Mnemonics for Announcements (Right-Click DJ Checkbox)
    %artist% is substituted for the name of the artist
    %song% is substituted for the name of the song
    %album% is substituted for the name of the album
    %year% is substituted for the year of release
    %track% is substituted for the number of the track
    %random% is substituted for a random word from the list of words in the file words.txt
    Prefix announcement line with '#' sign to suspend playing until announcement is done
    The Record button can be used when nothing is playing. You enter a filename which is given a .wav extension, and choose a sound format. It will then start recording. You can press Stop to stop recording and choose whether to save it, or you can press record again to stop recording and automatically save it. You can add to the playlist either while the player is playing, or when it is stopped. Added tracks are sorted alphanumerically before adding them to the playlist. To start a fresh playlist, you should clear the current one by right-clicking the Open Media File button before using it to open more files. You can recall the last playlist used before the current one, by clicking the "Played" label. If you right click this label, the current playlist is reloaded. If you click the "Of" label, the current playlist is stored. If you right click this label, the last stored playlist is reloaded. To select a track from the playlist, click the track name label and choose from the list. You can edit any of the playlists : the files are plaintext and they are named as follows :-

  • mjplayer.cply - the current playlist
  • mjplayer.cold - the previous playlist
  • mjplayer.cbak - the stored playlist

    Each of these is stored in the application installation directory (like MJ Registry Watcher), and you should exit mjplayer before editing them in notepad (or whatever your text editor is).

    Back to the Top

    MJZoomer (353K)  

    is a simple BMP, JPG, PNG, WMF, EMF and ICO image viewer, converter and printer. It can also copy any image to the Windows clipboard (right-click on the Print button).

    Back to the Top

    MJ Browser (493K)  

    is a simple and fast, but fully-featured browser, based on IE's underlying built-in OS support routines. It has support for :-

    Recent Updates

    Back to the Top

    MJ Emails (3.57M)  

    is a simple and fast POP3/SMTP email client. It can use APOP for secure login and TLS for encrypted message retrieval and sending. You can even use it to handle your emails from a USB pen drive without affecting or leaving anything on the host computer. It also has a complete log of POP3 activity, accessible by right-clicking the "POP3" button, which is useful if comms do not work as they should. Unzip the contents of the zip into a directory of your choice. To set up your accounts, click the "POP3" button to configure your hosts and port numbers. You can set TLS by prefixing the port number with a '+' for explicit TLS and '-' for implicit TSL. I found that, on Office365 mail servers, POP3 host uses implicit TLS, and SMTP uses explicit.
    For example, POP3 host "" and SMTP host ""
    The send and receive screens both pick up details from the lines in this configuration screen.

    New Stuff

    It uses your own white and black lists to filter relevant email. It automatically decodes email text that is base64/mime encoded. You can also export the retrieved list of emails to a CSV file for further investigation and processing. MJEmails allows you to vet an email drop for spam and clear away any emails that you know you don't want. It has a 20 second keep-alive when connected.

    You can send HTML email with inserted images and attachments. It has a built-in sent email log and address book. It has command line support for "mailto:" email addresses so it can be called up from, for example, Mozilla Firefox "mailto:" links.

    The HTML email composer window has spell-checking with English UK and US dictionaries and thesauruses. Misspelt words are wiggly-underlined in red and you can right-click on misspellings to see corrections, suggestions and spelling options. There are even more options on the editor's context menu as shown in the screen snapshot. Many aids for composing HTML emails are built in, for example, inserting images automatically handles the <IMG...> tags for you, by placing them at the cursor position. Pressing "Enter" will automatically add a <BR> tag for you too (if you really just want a new line, use Ctrl+Enter instead). You can also click into the HTML preview window, and by placing focus there, you can edit the HTML directly, using drag and drop techniques, typing, and an enhanced right-click menu. You can select an image, move it around, and resize it, all with your mouse. Once you are happy with the way the email looks in the preview window, you can save your changes to the Email HTML Body window with the "Save to Email HTML Body" button. The editor is shown in the "Hawaii" screen shot below.

    There is also a simple CSS Style Designer and a message viewer. These both use internal browser components based on the in-built IE DLLs in the Windows OS. These default to using IE7 controls, unless you apply the included "mjbrow_raisever.reg" registry file so that they use the IE11 DLLs instead. Obviously, you will need IE11 installed on the PC before this will work. The IE11 controls are more up-to-date and perform faster and better than the IE7 ones.

    One of its strongest features is the filtering of spam using regular expressions and wildcards ("*" to match any characters or none, "?" to match any single character, and "mjre:" to prefix a regular expression filter). The first 20 lines of the message, plus the "from", "to" and "subject" lines can be checked against your filters. I commonly use these filters to trap loads of spam :-
    Regular Expression filters are introduced by prefixing the filter with "mjre:". On the third line, I check for the string "**spam**" and because "*" usually means match any character, I have used a regular expression to denote that I mean the asterisk character to be taken literally, and not as a wildcard character. My ISP puts "--spam--" into the subject line of any email it reckons is spam. And I always discard email addressed to "undisclosed recipients", "undisclosed-recipient", or any combination of those words.

    Help Screen :-
    Click Column Header to Sort that Column
    Right-Click Column Header to Search that Column
    Del to Mark Email as Deleted
    Ctrl+Del to Recall Email
    Alt+Up/Down Prev/Next Whitelist hit
    Double Click or Enter to Get Message from Cache/Server
    Ctrl+Enter Get Msg from Server (Bypass Cache)
    Entries marked with * will be permanently deleted on manual disconnect or quit

    free counters

    Back to the Top
    Back to Main Page