c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen/** @file
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen *
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * delinvalid - remove "InvalidDisplay" key on NT4
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen *
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * Copyright (C) 2006-2010 Oracle Corporation
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen *
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * This file is part of VirtualBox Open Source Edition (OSE), as
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * available from http://www.virtualbox.org. This file is free software;
c05435d86f46effbb48f460bd664b0c4170c07f1johanengelen * you can redistribute it and/or modify it under the terms of the GNU
9efa90a14f617d756ada86d166a3509042565469johanengelen * General Public License (GPL) as published by the Free Software
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * Foundation, in version 2 as it comes in the "COPYING" file of the
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow */
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow/*
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow Purpose:
5ad07d9f8a12d76d24a6a8f60f4caa29f2265555Shlomi Fish
5ad07d9f8a12d76d24a6a8f60f4caa29f2265555Shlomi Fish Delete the "InvalidDisplay" key which causes the display
5ad07d9f8a12d76d24a6a8f60f4caa29f2265555Shlomi Fish applet to be started on every boot. For some reason this key
5ad07d9f8a12d76d24a6a8f60f4caa29f2265555Shlomi Fish isn't removed after setting the proper resolution and even not when
5ad07d9f8a12d76d24a6a8f60f4caa29f2265555Shlomi Fish doing a driver reinstall. Removing it doesn't seem to do any harm.
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow The key is inserted by windows on first reboot after installing
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow the VBox video driver using the VirtualBox utility.
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow It's not inserted when using the Display applet for installation.
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow There seems to be a subtle problem with the VirtualBox util.
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow */
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow//#define _UNICODE
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
9efa90a14f617d756ada86d166a3509042565469johanengelen#include <windows.h>
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#include <setupapi.h>
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#include <regstr.h>
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#include <DEVGUID.h>
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#include <stdio.h>
0586e948b7fc1e97fa7cdddf926e4ec768a40392verbalshadow
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow#include "tchar.h"
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow#include "string.h"
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow/*******************************************************************************
cbd9e9998d6b2b36f0a979bea85d75410f3d3974johanengelen * Defined Constants And Macros *
cbd9e9998d6b2b36f0a979bea85d75410f3d3974johanengelen *******************************************************************************/
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow/////////////////////////////////////////////////////////////////////////////
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadowBOOL isNT4 (void)
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow{
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow OSVERSIONINFO OSversion;
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow OSversion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow ::GetVersionEx(&OSversion);
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow switch (OSversion.dwPlatformId)
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow {
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow case VER_PLATFORM_WIN32s:
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow case VER_PLATFORM_WIN32_WINDOWS:
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow return FALSE;
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow case VER_PLATFORM_WIN32_NT:
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow if (OSversion.dwMajorVersion == 4)
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow return TRUE;
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow else return FALSE;
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow default:
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow break;
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow }
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow return FALSE;
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow}
e652143fdccf6d691397f1fdc8ec122a56603762johanengelen
e652143fdccf6d691397f1fdc8ec122a56603762johanengelenint main (int argc, char **argv)
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow{
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow int rc = 0;
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow /* This program is only for installing drivers on NT4 */
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow if (!isNT4())
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow {
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow printf("This program only runs on NT4\n");
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow return -1;
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow }
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow /* Delete the "InvalidDisplay" key which causes the display
0311847cf7400d865b1f6e730ec2e3cf210a4104verbalshadow applet to be started on every boot. For some reason this key
61a68cdf709696df81afb4293f0db1cf85ad7180verbalshadow isn't removed after setting the proper resolution and even not when
ee44657972fae064de9737054b79ab14dc230635Shlomi Fish doing a driverreinstall. */
ee44657972fae064de9737054b79ab14dc230635Shlomi Fish RegDeleteKey(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\GraphicsDrivers\\InvalidDisplay"));
ee44657972fae064de9737054b79ab14dc230635Shlomi Fish RegDeleteKey(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Control\\GraphicsDrivers\\NewDisplay"));
ee44657972fae064de9737054b79ab14dc230635Shlomi Fish
ee44657972fae064de9737054b79ab14dc230635Shlomi Fish return rc;
ee44657972fae064de9737054b79ab14dc230635Shlomi Fish}
ee44657972fae064de9737054b79ab14dc230635Shlomi Fish