• Stars
    star
    573
  • Rank 77,865 (Top 2 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created about 2 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fix Windows Update on Windows XP, Vista, Server 2008, 2003, and 2000

Legacy Update

wakatime

Since Windows XP was discontinued in 2014, followed by Windows 7 in 2020, Microsoft’s support for their earlier OSes has significantly dwindled. As XP and earlier don’t officially support modern security improvements, such as the SHA256 hash algorithm required by modern SSL and Authenticode certificates as of 2019, much of the internet has become inaccessible to these devices. Adding insult to injury, Microsoft actively removed many downloads for XP and earlier versions in 2020. In effect, working with these OSes is now incredibly difficult.

To address this, Legacy Update hosts a patched instance of the Windows Update website. This works because the original Windows Update website simply accesses an ActiveX control that connects to the Windows Update service running on your computer.

If this website helped you to update your old PCs, please consider leaving a tip to help me pay for the server costs. Thank you!

The ActiveX Control

This repo hosts an ActiveX control used as a replica of the original one developed by Microsoft for the official Windows Update website. The original version of Legacy Update required using a proxy autoconfiguration file (.pac) and some additional configuration of IE security settings to intercept requests to the update.microsoft.com site, because the Microsoft Wuweb.dll control validates that it is being used on the official update.microsoft.com domain. With the custom Legacy Update ActiveX control, proxying is no longer required, because we have full control over the validation logic. This also allows adding additional convenient features not possible with JavaScript alone.

Building

The project can be built on any version of Windows from XP to 11, though if you run a later OS you’ll ideally want to set up an XP VM for testing.

You will need to install:

  • Visual Studio - select the following individual components:

    • C++ Windows XP Support for VS 2017 (v141) tools
    • C++ ATL for v141 build tools (x86 & x64)
    • C++ MFC for v141 build tools (x86 & x64)

    If building on XP, use Visual Studio 2010 instead (the last version that runs on XP). The solution is compatible with 2010 and up.

  • Visual Studio 2008 for compiling a build that works on XP RTM and 2000 SP4 - not required if you only want to build for XP SP2 and later

  • NSIS

In setup/ you will need to download the following additional files:

  • A copy of updroots.exe, which you can extract from this update using 7-Zip or extract.exe.

I’ve already bundled copies of the NSIS plugins w7tbp (Windows 7+ taskbar progress bar feature - zlib license), FindProc (checks if a process is running - ? license), and my fork of NSxfer (file downloader - zlib license).

Testing

For debugging, if running on XP with IE8, install Utilu IE Collection. IE6/IE7 is much more useful for debugging the native code, because of its simplistic single-process model. Visual Studio is able to launch it and directly attach to the process the code is running in.

To configure the debugger:

  1. Right click LegacyUpdate in the Solution Explorer → Properties
  2. In the Debugging tab, set the Command field to:
    • For system IE install: $(ProgramW6432)\Internet Explorer\iexplore.exe
    • For Utilu IE6 RTM: $(ProgramW6432)\Utilu IE Collection\IE600\iexplore.exe
    • For Utilu IE6 SP2: $(ProgramW6432)\Utilu IE Collection\IE600XPSP2\iexplore.exe
    • For Utilu IE7: $(ProgramW6432)\Utilu IE Collection\IE700\iexplore.exe
  3. Set the Command Arguments field to http://legacyupdate.net/windowsupdate/v6/, or any other URL you want to use for debugging
  4. If running on XP, in the Debugger tab, set Register Output to Yes. If running on Vista or later, this will throw a permission denied error due to UAC. You’ll need to manually register the control using regsvr32 LegacyUpdate.dll in an administrator command prompt.

Website source code

I haven’t yet open sourced the website. This is because the vast majority of it is Microsoft code - just with a handful of patches I’ve made to remove Microsoft trademark branding, switch it to the Legacy Update ActiveX control, and make some slight bug fixes/improvements. It doesn’t feel appropriate to put an open source license on something I don’t own. However, if you would like to review it, you can right click → View Source on the website and take a poke around, mainly in the JavaScript files. You might find DebugBar and CompanionJS (requires Visual Studio or standalone Microsoft Script Debugger) useful.

I’ve tinkered with writing a ground-up replacement of the Microsoft-developed Windows Update website, which I’ll open source when I feel it’s ready for public use (there are currently a number of bugs and missing features).

Disclaimer

The existence of this project shouldn’t be taken as an endorsement to continue using unsupported OSes. You should stick to a supported OS such as Windows 10 or 11 (or, try Linux?!). However, this service exists anyway in recognition that using these OSes is sometimes necessary to run legacy hardware/software, or just interesting to play around with.

This project is not affiliated with or endorsed by Microsoft. This software is provided “as is”, without warranty of any kind. We don’t believe anything should go wrong, but please ensure you have backups of any important data anyway.

License

Licensed under the Apache License, version 2.0. Refer to LICENSE.md.

More Repositories

1

iOSMac-Demo

Objective-C
31
star
2

dotfiles

They’re files that have dots in them.
Shell
15
star
3

IRCCloud-for-iOS

Unofficial IRCCloud app for iOS
Objective-C
12
star
4

Experience

The classic Windows XP logo screen saver for, of all things, OS X.
Objective-C
10
star
5

usr-local-bin

Useful scripts I stick in /usr/local/bin
6
star
6

twauth

Command line tool to quickly authenticate a user against the Twitter API.
JavaScript
5
star
7

iWiki

iPhone style theme for MediaWiki
CSS
5
star
8

Aptdate

Cydia package update banner notifications
Objective-C
4
star
9

gsFix

OS X app that removes hosts file redirects for Apple's SHSH server
Objective-C
4
star
10

TextualScripts

Textual scripts.
4
star
11

githook

Twitter and Slack notification bot for GitHub events
JavaScript
3
star
12

ThatSameHack

That same icon rows and columns hack... now for iOS 5!
Logos
3
star
13

docker

Shell
2
star
14

Siritate

Fixes for (iPhone 4S) Siri on iPad
Logos
2
star
15

LillieWeeb001-iOS-Tweaks

Objective-C
2
star
16

Programmer

Programs eLabtronics chips from ASM files
Visual Basic
2
star
17

rickascii

He won't give you up on the command line either.
C
2
star
18

ios-build-htop

C
2
star
19

MinTouch

Lightweight and fast mobile web app library
JavaScript
2
star
20

mobileterminal

Mirror of the old MobileTerminal Google Code project
Objective-C
1
star
21

Hydrogen

Lightweight but powerful browser
Visual Basic
1
star
22

BlogDown

Simple PHP, MySQL, Markdown and Disqus blog system
PHP
1
star
23

WallpaperHaxPlus

Stupid program to get around stupid wallpaper group policies
C#
1
star
24

UnittWebSocketClient

Mirror of UnittWebSocketClient, because subversion sucks.
Objective-C
1
star
25

DontForget

Disable device when battery is low
Objective-C
1
star
26

NotiToggle

SBSettings toggle for banner notifications
Objective-C
1
star
27

Terminal-Theme-for-IRCCloud

Exactly that, a terminal theme for IRCCloud.
1
star