diff --git a/configure b/configure
index a536194601dd37fe1d3198e864132bd90873d8ee..71cf99996fd2671692509c3f599120022df4a060 100755
--- a/configure
+++ b/configure
@@ -5683,6 +5683,7 @@ programs/clock/Makefile
 programs/cmdlgtst/Makefile
 programs/control/Makefile
 programs/avitools/Makefile
+programs/osversioncheck/Makefile
 programs/notepad/Makefile
 programs/progman/Makefile
 programs/regtest/Makefile
@@ -5875,6 +5876,7 @@ programs/clock/Makefile
 programs/cmdlgtst/Makefile
 programs/control/Makefile
 programs/avitools/Makefile
+programs/osversioncheck/Makefile
 programs/notepad/Makefile
 programs/progman/Makefile
 programs/regtest/Makefile
diff --git a/configure.in b/configure.in
index 3463b77499df8eb2254e511af11ba51dc79619bc..4085e0d4087da291bba8a1c5c9808799bc3badac 100644
--- a/configure.in
+++ b/configure.in
@@ -890,6 +890,7 @@ programs/clock/Makefile
 programs/cmdlgtst/Makefile
 programs/control/Makefile
 programs/avitools/Makefile
+programs/osversioncheck/Makefile
 programs/notepad/Makefile
 programs/progman/Makefile
 programs/regtest/Makefile
diff --git a/programs/Makefile.in b/programs/Makefile.in
index 5b6fe2b36ea1ccc8e9645b8efafe82d8a09ac179..7caf1f219f63d2506ba3aca423269578af68c7b4 100644
--- a/programs/Makefile.in
+++ b/programs/Makefile.in
@@ -3,6 +3,7 @@ SUBDIRS = \
 	clock \
 	cmdlgtst \
 	control \
+	osversioncheck \
 	notepad \
 	progman \
 	regapi \
diff --git a/programs/osversioncheck/.cvsignore b/programs/osversioncheck/.cvsignore
new file mode 100644
index 0000000000000000000000000000000000000000..63957244162c559bb9704c26d5c3196c8036e594
--- /dev/null
+++ b/programs/osversioncheck/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+osversioncheck
diff --git a/programs/osversioncheck/ChangeLog b/programs/osversioncheck/ChangeLog
new file mode 100644
index 0000000000000000000000000000000000000000..dc1a01b5de88a53ffbaccc8f6763e2dbbea6494d
--- /dev/null
+++ b/programs/osversioncheck/ChangeLog
@@ -0,0 +1,4 @@
+1999-09-16  Morten Eriksen <mortene@sim.no>
+
+	* [osversioncheck.c]
+	Created. 
diff --git a/programs/osversioncheck/Makefile.in b/programs/osversioncheck/Makefile.in
new file mode 100644
index 0000000000000000000000000000000000000000..b7eb5864d52d25249e6cec8d1693ebf7936d4456
--- /dev/null
+++ b/programs/osversioncheck/Makefile.in
@@ -0,0 +1,30 @@
+DEFS      = -DWINELIB
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = none
+PROGRAMS  = osversioncheck
+ALL_LIBS  = $(WINELIB) $(X_LIBS) $(XLIB) $(LIBS)
+
+C_SRCS = osversioncheck.c
+
+all: $(PROGRAMS)
+
+@MAKE_RULES@
+
+#this line is needed to prevent winestub.o being linked
+WINESTUB = 
+
+osversioncheck: $(OBJS)
+	$(CC) -o osversioncheck $(OBJS) $(LDOPTIONS) $(ALL_LIBS)
+
+install: dummy
+	$(INSTALL_PROGRAM) osversioncheck $(bindir)/osversioncheck
+
+uninstall: dummy
+	$(RM) $(bindir)/osversioncheck
+
+dummy:
+
+### Dependencies:
diff --git a/programs/osversioncheck/osversioncheck.c b/programs/osversioncheck/osversioncheck.c
new file mode 100644
index 0000000000000000000000000000000000000000..fd8510f190d898ebf1e5c984c09f19c3da73e83a
--- /dev/null
+++ b/programs/osversioncheck/osversioncheck.c
@@ -0,0 +1,93 @@
+/*
+ * Use the GetVersionEx() Win32 API call to show information about
+ * which version of Windows we're running (or which version of Windows
+ * Wine believes it is masquerading as).
+ *
+ * Copyright 1999 by Morten Eriksen <mailto:mortene@sim.no>
+ *
+ */
+
+#include <windows.h>
+#include <winbase.h>
+#include <stdio.h>
+
+#ifdef WINELIB
+/* External declaration here because we don't want to depend on Wine's
+   internal headers. */
+extern HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] );
+#endif /* WINELIB */
+
+
+void
+show_last_error(void)
+{
+  DWORD lasterr;
+  LPTSTR buffer;
+  BOOL result;
+
+  lasterr = GetLastError();
+
+  result = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+			 FORMAT_MESSAGE_FROM_SYSTEM |
+			 FORMAT_MESSAGE_IGNORE_INSERTS,
+			 NULL,
+			 lasterr,
+			 0,
+			 (LPTSTR)&buffer,
+			 0,
+			 NULL);
+
+  if (result) {
+    fprintf(stderr, "Win32 API error (%ld):\t%s", lasterr, buffer);
+    LocalFree((HLOCAL)buffer);
+  }
+  else {
+    fprintf(stderr, "Win32 API error (%ld)", lasterr);
+  }
+}
+
+int
+main(int argc, char ** argv)
+{
+  BOOL result;
+  OSVERSIONINFO oiv;
+  HINSTANCE hinst;
+
+#ifdef WINELIB
+  if (!(hinst = MAIN_WinelibInit(&argc, argv))) return 0;
+#endif /* WINELIB */
+
+  /* FIXME: GetVersionEx() is a Win32 API call, so there should be a
+     preliminary check to see if we're running bare-bones Windows3.xx
+     (or even lower?). 19990916 mortene. */
+
+  oiv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+  result = GetVersionEx(&oiv);
+
+  if (result == FALSE) {
+    show_last_error();
+  }
+  else {
+    char * platforms[] = {
+      "Win32s on Windows 3.1",
+      "Win32 on Windows 95 or Windows 98",
+      "Win32 on Windows NT/Windows 2000",
+      "unknown!"
+    };
+    int platformval = 3;
+
+    switch (oiv.dwPlatformId) {
+    case VER_PLATFORM_WIN32s: platformval = 0; break;
+    case VER_PLATFORM_WIN32_WINDOWS: platformval = 1; break;
+    case VER_PLATFORM_WIN32_NT: platformval = 2; break;
+    }
+
+    fprintf(stdout,
+	    "MajorVersion: %ld\nMinorVersion: %ld\nBuildNumber: 0x%lx\n"
+	    "Platform: %s\nCSDVersion: '%s'\n",
+	    oiv.dwMajorVersion, oiv.dwMinorVersion, oiv.dwBuildNumber,
+	    platforms[platformval], oiv.szCSDVersion);
+  }
+
+  return 0;
+}