Windows 10 Microsoft Money Has Stopped Working

If you are one of the few still using MS Money for personal finance tracking, the last bunch of years have been trying. Microsoft ceased development on the product releasing the Microsoft Money Plus Sunset Deluxe Edition that stops trying to connect to their non-existent servers (more information available here).

Recent upgrades to Windows 10 caused issues for MS Money users with the error Money requires Internet Explorer 6 to function properly. Please reinstall Internet Explorer 6 so these components can be added. which requires updating of a registry key. The short version is the key HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Version needs to be updated to 9.11.10240.0.

That had me successfully working on Windows 10 with MS Money. I then encountered a strange issue where when loading an OFX or QIF file retrieved from an online bank I would get the message Microsoft Money Has Stopped Working and then the application would crash. As I was thinking I was finally going to be forced to switch to Quicken, I came across a forum post mentioning the issue had to do with a bad piece of code in the mnyob99.dll.

The original issue was identified and patched long ago by the amazing technical wizard Raymond Chen in this post Microsoft Money crashes during import of account transactions or when changing a payee of a downloaded transaction where he talks about patching code beginning at the offset 003FACE8. His process of diagnosing and resolving the issue all without access to the source code is a work of technical artistry. Well worth checking out.

This led to many folks posting patched versions of the dll for download (which isn’t that appealing to any security conscious folks). User Cal Learner on the forum though posted a zipped up concise little Python script that handles replacing the byte sequence in the dll. I have listed his nice short little script below:

#patch99.py 2013-1-5 Cal Learner. Maybe has bugs.
#Experimental code for advanced patch-oriented users.
#You are free to use this in any helpful way.

import os, sys,string, hashlib

if __name__=="__main__":

    f = open("mnyob99.dll.orig",'rb') # file we are opening.
    data = f.read()  #as-found file in
    f.close()

    bad_bytes= b'\x85\x1C\xFD\xFF\xFF\x50\x6A\x5C\xFF\xB5\x1C\xFD\xFF\xFF\xE8'
    good_bytes=b'\x8D\x1C\xFD\xFF\xFF\x51\x6A\x5C\x85\xB5\x1C\xFD\xFF\xFF\xB9'
    data_bad_spot =data.find(bad_bytes) 
    print "String offset in file:", data_bad_spot, "hex:",hex(data_bad_spot)

    bad_finds=string.count(data,bad_bytes)
    good_finds=string.count(data,good_bytes)
    print "Diagnostics: " ,len(data),', ',bad_finds,', ',good_finds,'.'
    #print hashlib.md5(data).hexdigest
    m = hashlib.md5()
    m.update(data)
    print "MD5 for mnyob99.dll.orig: ", m.hexdigest()

    if (data_bad_spot <0):
        #did not find the bad string
        
        print "I don't find the problem target string. Doing nothing."
        sys.exit(1)
   
        
    else: # found a bad spot.. 
        print "Patching the file"
    
        f = open("mnyob99.dll.fix",'wb') # file we are opening.

        fixed_data=data.replace(bad_bytes, good_bytes,1) #replace the first instance
        m2= hashlib.md5()
        m2.update(fixed_data)
        print "MD5 for mnyob99.dll.fix: ", m2.hexdigest()
        f.write(fixed_data)
    
        sys.exit(0)


After using his script to patch my file, I’m once again back in business with my old antiquated (but perfectly functioning) version of MS Money running on Windows 10. Many thanks to Raymond Chen and Cal Learner for putting their information out there for other users to benefit from.

This entry was posted in Finance, Technology and tagged , , , , . Bookmark the permalink.

4 Responses to Windows 10 Microsoft Money Has Stopped Working

  1. Al Mast says:

    How do I run this script?

  2. Charles Alleyne says:

    I modified my registry value to 9.11.10240. to 0, rebooted my computer and still get the same message “microsoft money has stopped working” if there is another work around for this issue please help

  3. Doug Porter says:

    You have to install Python and then run the script from the command line. It looks for a copy of the original dll named mnyob99.dll.orig and then generates a fixed version named mnyob99.dll.fix that you can then use to replace your original version of mnyob99.dll (after renaming of course). You could also look at this blog which has a link to download the fixed file (if you trust that the file is ok to download): https://microsoftmoneyoffline.wordpress.com/tag/mnyob99-dll-patch/ Then you would not have to patch your copy yourself.

  4. Doug Porter says:

    If you still get that then you will probably need to patch the mnyob99.dll file like the post mentions.

Leave a Reply

Your email address will not be published.