diff --git a/src/sbbs3/scfg/scfg.c b/src/sbbs3/scfg/scfg.c
index 0e5c1e165200fdd20ea477313823b8e97b52f442..ce60d2d01a3b1f495aa6afcefd3515565c66f428 100644
--- a/src/sbbs3/scfg/scfg.c
+++ b/src/sbbs3/scfg/scfg.c
@@ -381,6 +381,21 @@ void set_cfg_filename(const char* hostname)
 		snprintf(cfg.filename, sizeof cfg.filename, "%ssbbs%s%s.ini", cfg.ctrl_dir, *hostname ? ".":"", hostname);
 }
 
+#ifdef _WIN32
+	#define printf cprintf
+#endif
+
+void banner()
+{
+	char	compiler[32];
+
+	DESCRIBE_COMPILER(compiler);
+
+	printf("\nSynchronet Configuration Utility (%s)  v%s%c  " COPYRIGHT_NOTICE
+        "\n",PLATFORM_DESC, VERSION, REVISION);
+	printf("\nCompiled %s/%s %s %s with %s\n", GIT_BRANCH, GIT_HASH, __DATE__, __TIME__, compiler);
+}
+
 int main(int argc, char **argv)
 {
 	char*	p;
@@ -390,14 +405,12 @@ int main(int argc, char **argv)
 	BOOL    door_mode=FALSE;
 	BOOL	alt_chars = FALSE;
 	int		ciolib_mode=CIOLIB_MODE_AUTO;
-	char	compiler[32];
-
-	DESCRIBE_COMPILER(compiler);
-
-    printf("\nSynchronet Configuration Utility (%s)  v%s%c  " COPYRIGHT_NOTICE
-        "\n",PLATFORM_DESC, VERSION, REVISION);
-	printf("\nCompiled %s/%s %s %s with %s\n", GIT_BRANCH, GIT_HASH, __DATE__, __TIME__, compiler);
 
+#if defined(_WIN32)
+	cio_api.options |= CONIO_OPT_DISABLE_CLOSE;
+#else
+	banner();
+#endif
 	xp_randomize();
 	cfg.size=sizeof(cfg);
 
@@ -493,10 +506,22 @@ int main(int argc, char **argv)
 						case 'I':
 							ciolib_mode=CIOLIB_MODE_CURSES_ASCII;
 							break;
-#endif
+#elif defined _WIN32
 						case 'W':
 							ciolib_mode=CIOLIB_MODE_CONIO;
 							break;
+						case 'G':
+							switch (toupper(argv[i][3])) {
+								case 0:
+								case 'W':
+									ciolib_mode = CIOLIB_MODE_GDI;
+									break;
+								case 'F':
+									ciolib_mode = CIOLIB_MODE_GDI_FULLSCREEN;
+									break;
+							}
+							break;
+#endif
 						case 'D':
 		                    door_mode=TRUE;
 		                    break;
@@ -514,7 +539,16 @@ int main(int argc, char **argv)
 					auto_save=TRUE;
 					break;
                 default:
-					USAGE:
+				USAGE:
+#ifdef _WIN32
+					uifc.size=sizeof(uifc);
+					uifc.mode |= UIFC_NOMOUSE;
+					uifc.scrn_len = 40;
+					initciolib(CIOLIB_MODE_CONIO);
+					uifcini32(&uifc);
+					banner();
+#endif
+
                     printf("\nusage: scfg [ctrl_dir] [options]"
                         "\n\noptions:\n\n"
                         "-w                run initial setup wizard\n"
@@ -534,20 +568,28 @@ int main(int argc, char **argv)
 						"-host=<name>      set hostname to use for alternate sbbs.ini file\n"
 						"-iX               set interface mode to X (default=auto) where X is one of:\n"
 #ifdef __unix__
-						"                   X = X11 mode\n"
-						"                   C = Curses mode\n"
-						"                   F = Curses mode with forced IBM charset\n"
-						"                   I = Curses mode with forced ASCII charset\n"
-#else
-						"                   W = Win32 console mode\n"
-#endif
-						"                   A = ANSI mode\n"
-						"                   D = standard input/output/door mode\n"
+						"                   X  = X11 mode\n"
+						"                   C  = Curses mode\n"
+						"                   F  = Curses mode with forced IBM charset\n"
+						"                   I  = Curses mode with forced ASCII charset\n"
+#elif defined(_WIN32)
+						"                   W  = Win32 console mode\n"
+#if defined(WITH_GDI)
+						"                   G  = Win32 graphics mode\n"
+						"                   GF = Win32 graphics mode, full screen\n"
+#endif // WITH_GDI
+#endif // _WIN32
+						"                   A  = ANSI mode\n"
+						"                   D  = standard input/output/door mode\n"
 						"-A                use alternate (ASCII) characters for arrow symbols\n"
                         "-v#               set video mode to # (default=auto)\n"
                         "-l#               set screen lines to # (default=auto-detect)\n"
 						"-y                automatically save changes (don't ask)\n"
                         );
+#ifdef _WIN32
+					printf("\nHit a key to close...");
+					getch();
+#endif
         			exit(0);
 			}
 		}
diff --git a/src/sbbs3/scfg/scfg.vcxproj b/src/sbbs3/scfg/scfg.vcxproj
index c5b3cca82caf08dff37319f6b9f3da5e37977bb4..fd9653917eca867b8a7fe94de1c737d682e64f57 100644
--- a/src/sbbs3/scfg/scfg.vcxproj
+++ b/src/sbbs3/scfg/scfg.vcxproj
@@ -34,7 +34,6 @@
     <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
     <Import Project="..\..\xpdev\xpdev.props" />
     <Import Project="..\..\smblib\smblib.props" />
-    <Import Project="..\..\conio\conio.props" />
     <Import Project="..\..\uifc\uifc.props" />
     <Import Project="..\..\build\undeprecate.props" />
     <Import Project="..\..\build\target_ia32.props" />
@@ -42,13 +41,13 @@
     <Import Project="..\..\encode\encode.props" />
     <Import Project="..\..\..\3rdp\win32.release\cryptlib\cryptlib.props" />
     <Import Project="..\..\..\3rdp\win32.release\libarchive\libarchive.props" />
+    <Import Project="..\..\conio\conio_gdi.props" />
   </ImportGroup>
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
     <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
     <Import Project="..\..\xpdev\xpdev.props" />
     <Import Project="..\..\smblib\smblib.props" />
-    <Import Project="..\..\conio\conio.props" />
     <Import Project="..\..\uifc\uifc.props" />
     <Import Project="..\..\build\undeprecate.props" />
     <Import Project="..\..\build\target_ia32.props" />
@@ -56,6 +55,7 @@
     <Import Project="..\..\encode\encode.props" />
     <Import Project="..\..\..\3rdp\win32.release\cryptlib\cryptlib.props" />
     <Import Project="..\..\..\3rdp\win32.release\libarchive\libarchive.props" />
+    <Import Project="..\..\conio\conio_gdi.props" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
@@ -97,7 +97,7 @@
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>.\msvc.win32.exe.debug/scfg.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
+      <SubSystem>Windows</SubSystem>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
       <DataExecutionPrevention>
       </DataExecutionPrevention>
@@ -139,7 +139,7 @@
       <OutputFile>.\msvc.win32.exe.release/scfg.exe</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ProgramDatabaseFile>.\msvc.win32.exe.release/scfg.pdb</ProgramDatabaseFile>
-      <SubSystem>Console</SubSystem>
+      <SubSystem>Windows</SubSystem>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
       <DataExecutionPrevention>
       </DataExecutionPrevention>
@@ -238,8 +238,8 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\conio\conio.vcxproj">
-      <Project>{84592e48-27ca-48a6-b9c6-243d2347a578}</Project>
+    <ProjectReference Include="..\..\conio\conio_gdi.vcxproj">
+      <Project>{fbcce03b-65ee-44a1-bbe1-b1f789d223a1}</Project>
     </ProjectReference>
     <ProjectReference Include="..\..\smblib\smblib.vcxproj">
       <Project>{d674842b-2f41-42cb-9426-b3c4b0682574}</Project>