CREEPINGNET'S WORLD
A GUIDE TO THE WINDOWS 3.1X INI FILES
One of the nice perks of WIndows 3.1x and Windows For Workgroups 3.1x is that it is an excellent platform as far as manually modifying the graphical environment using a plain ole' text editor. That's what this page is going to cover, the purpose, and sections, of the INI files as we see them in Windows 3.1x (I'll be using Windows For Workgroups 3.1x in a virtual machine for this purpose - using virtualbox on Linux Mint - but it does not alter antyhing I'm doing so all the same stuff still applies).

Windows (For Workgroups) 3.1(1) uses two or three primary INI files to work. THey are WIN.INI, SYSTEM.INI, and PROTOCOL.INI in the case that you have Windows For Workgroups 3.1x and have Networking installed and enabled.

However, just as a side note, if any of these files gets damaged and corrupted, Windows 3.1x has three CLEAN copies of these files saved with the file extention "*.CLN" (ie. WIN.CLN, SYSTEM.CLN, and PROTOCOL.CLN IIRC) - which allows you to exchange out any one of these files to troubleshoot issues with your Win31/WFW system. All of these files are "plaintext" meaning they can be opened in a regular text editor (ie Notepad.exe, DOS Edit, etc...) and edited. That's why we're doing such a deep dive on this, so that people can figure out they don't just have to steamroller their Win3x installation every damn time something breaks.
SYSTEM.INI
SYSTEM.INI is a file that contains most of the systme-level settings and configurations for Windows 3.1x. Things like what shell you are using, drivers, driver settings, and whatnot. See the sample below to get familiar - this was taking from my WFW311 VM that I created to work on this page.

[boot]
shell=progman.exe
network.drv=wfwnet.drv
mouse.drv=mouse.drv
language.dll=
sound.drv=mmsound.drv
comm.drv=comm.drv
keyboard.drv=keyboard.drv
system.drv=system.drv
386grabber=SVGA256.3GR
oemfonts.fon=VGAOEM.FON
fixedfon.fon=VGAFIX.FON
fonts.fon=VGASYS.FON
display.drv=SVGA256.DRV
drivers=mmsystem.dll msmixmgr.dll

[kayboard]
subtype=
type=4
keyboard.dll=
oemansi.bin=

[boot.description]
keyboard.typ=Enhanced 101 or 102 key US and Non US Keyboards
mouse.drv=Microsoft, or IBM PS/2
language.dll=English (American)
system.drv=MS-DOS System
codepage=437
woafont.fon=English (437)
aspect=100,96,96
display.drv=ET4000 800x600 256 Small
network.drv=Microsoft Windows Network (version 3.11)
secondnet.drv=No Additional Network Installed

[386Enh]
device=*vpd
mouse=*vmd
ebios=*ebios
woafont=dosapp.fon
display=VDDTL14.386
EGA80WOA.FON=EGA80WOA.FON
EGA40WOA.FON=EGA40WOA.FON
CGA80WOA.FON=CGA80WOA.FON
CGA40WOA.FON=CGA40WOA.FON
keyboard=*.vkd
network=*vnetbios,*vwc,vnetsup.386,vredir.386,vserver.386
netheapsizev=20
device=*vcd
device=*vpicd
device=*vtd
device=*reboot
device=*vdmad
device=*vsd
device=*v86mmgr
device=*pageswap
device=*dosmgr
device=*vmpoll
device=*wshell
device=*PAGEFILE
device=*BLOCKDRV
device=*vfd
device=*parity
device=*biosxlat
device=*vmcpd
device=*combuff
device=*cdpscsi
device=ctdapi.386
device=vpmtd.386
device=vcomm.386
device=serial.386
device=lpt.386
device=ifsmgr.386
device=vcache.386
device=vshare.386
local=CON
FileSysChange=off
COM3Irq=4
COM3Base=03E8
COM4Irq=3
COM4Base=02E8
PagingFile=C:\WINDOWS\WIN386.SWP
MaxPagingFileSize=118784
InDOSPolling=FLASE device=vsbpd.386
netmisc=ndis.386,ndis2sup.386,wsock.386,wstcp.386
netcard=pcntn3.386
transport=nwlink.386,nwbling.386,netbeui.386,vip.386,vdhcp.386,vtdi.386,vtcp,386
SysVMIn2ndBank=FALSE

[NonWindowsApp]
localtsrs=dosedit,ced

[vcache]
minfilecache=512

[mci]
WaveAudio=mciwave.drv
Sequencer=mciseq.drv
CDAudio=mcicda.drv

[drivers]
timer=timer.drv
midimapper=midimap.drv
Midi=sb16fm.drv
Midi1=sb16snd.drv
Wave=sb1snd.drv
Aux=sb16snd.drv
Mixer=sb16snd.drv

[DDEShares]
CHAT$=winchat,chat,,31,,0,,0,0,0
SCHAT$=winchat,chat,,31,,0,,0,0,0
CLPBK$=clipsrv,system,,31,,0,,0,0,0
HEARTS$=mshearts,hearts,,15,,0,,0,0,0

[Network]
winnet=wfwnet/00025100
multinet=nonet
FileSharing=Yes
PrintSharing=Yes
LogonDisconnected=yes
EnableSharing=Yes
UserName=username
Workgroup=WORKGROUP
ComputerName=SOMEOLD486
Comment=Old486DX
logonvalidated=no



[network drivers]
devdir=C:\WINDOWS
LoadRMDrivers=No
netcard=pcntnd.dos
pcntnd.dos=LOW
transport=ndishlp.sys,*netbeui

[Password Lists]
*Shares=C:\WINDOWS\Share000.PWL
username=C:\WINDOWS\USERNAME.PWL

[sndblast.drv]
Port=220
Int=5
DmaChannel=1
MidiPort=330
HDmaChannel=5
FDMAPlayback=0
FDMARecording=0
VoiceVolume=16, 16
FMVolume=16, 16
CDVolume=16, 16
LineVolume=16, 16
MicVolume=16
Mastervolume=16, 16
SpeakerVolume=16
MuteVurtual=10
OutputMixerSwitch=6
BassTone=16, 16
TrebleTone=16, 16
RecordGain=1, 1
OutputGain=1, 1
AGC=0
Mux_WaveIn=1e


[NWNBLINK]
LANABASE=1

[ms$pcntn30]
IPMask=0.0.0.0
IPAddress=0.0.0.0
Description=Advanced Micro Devices PCNET family
Binding=ms$pcntn3

[MSTCP]
EnableRouting=0
interfaces=ms$pcntn30
deadgwdetect=1
pmtudiscovery=1

[DNS]
DomainName=
DNSDomains=

[NBT]
LANABASE=2
EnableProxy=0
EnableDNS=0

[svga256.drv]
ChipSet=VMware SVGA2
LatchCapable=no
resolution=2
dpi=96
svgamode=48

[boot] - Obviously this is for how Windows boots up. It basically launches all of the basic drivers used by Windows 3.1x - those required to make it a functional GUI that actually works for the user - at boot time. This includes loading the shell, and loading drivers for I/O devices.

  • shell=PROGMAN.EXE - This is the load entry for the Windows shell. in Windows 3.1x this is the "Program Manager" - ie, that huge window that fills most of the screen and has the various "Program Groups" named after the icons found inside ie "Main" "Accessories" "Games" etc. This is one you might want to edit if you get an alternative shell - of which there were many made from the early days till now - for Windows 3.1x. One of the most popular changes made is for the installation of the program "Calimira" which is a replacement shell that makes Windows 3.1 look like Windows 95 (though there are some newer variants that make it look even newer - like XP/7/Vista/etc.).
  • network.drv=wfwnet.drv - basic networking driver for Windows For Workgroups. If you have plain jane Windows 3.1x you likely don't have this entry.
  • mouse.drv=mouse.drvThe Mouse driver. There may be times where this is something else, but this is the typical driver used for Serial or PS/2 Mice in Win31x, as we will soon see when we get to the "description" area.
  • language.dll=Likely this is for some kind of foreign language driver such as if you want to run Windows 3.1 in Finnish, Yiddish, or Japanese.
  • sound.drv=mmsound.drv one of the internal "MultiMedia" drivers for Windows, not sound card specific IIRC.
  • comm.drv=comm.drvSerial Port Driver - ie, those ports on the back that look like a grim robot's mouth.
  • keyboard.drv=keyboard.drvBasiic driver for the keyboard
  • system.drv=system.drvA "system" driver, don't change this one
  • 386grabber=SVGA256.3GRThis is just one of the lines for the graphics card (which is a huge part of Windows 3.1x anyway as it IS A GRAPHICAL User Interface). This file will always be a file ending in *.3GR.
  • oemfonts.fon=VGAOEM.FONOEM Fonts for Windows
  • fixedfon.fon=VGAFIX.FONA "Fixed Font" is a font that has a set size and can line up - a lot like the 80x25 column ROM text mode font found in DOS, that's what this is used for I believe. It's installed when your video card is installed.
  • fonts.fon=VGASYS.FONAnother video-card software installed font, this one is for the Terminal/System font.
  • display.drv=SVGA256.DRVAnd here's your actual graphics driver. In this case, were using SVGA 256 Color driver. This along with the fonts and 3GR file above are all in c:\windows\system\ and installed when you install your graphics card.
  • drivers=mmsystem.dll msmixmgr.dllTwo more drivers for the multimedia audio system. I think these are not there when the internal speaker is being used (pc.drv maybe?). The first one is the subsystem for audio (universal), and the other is the internal Windows mixer controls that changes levels for volume of all the I/O for the multimedia subsystem (read: NOT the specific audio card).

[keyboard] - this is a series of settings that have to do with the keyboard on your system.

  • Subtype=
  • type=4
  • keyboard.dll=
  • oemansi.bin=

[boot.description] - This largely is a set of "defines" that give a friendly name to the various hardware elements in use by Windows 3.1x.

  • keyboard.typ=Enhanced 101 or 102 key US and Non US Keyboards
  • mouse.drv=Microsoft, or IBM PS/2
  • language.dll=English (American)
  • system.drv=MS-DOS System
  • codepage=437
  • woafont.fon=English (437)
  • aspect=100,96,96
  • display.drv=ET4000 800x600 256 Small
  • network.drv=Microsoft Windows Network (version 3.11)
  • secondnet.drv=No Additional Network Installed

[386Enh] - This section deals with 386 Enhanced Mode settings, which is what Windows 3.1x is used in on most systems with a 386 or better CPU (including 386 SX).

[NonWindowsApp] -

  • localtsrs=dosedit.ced

[vcache] -

  • minfilecache=512

[mci] -

  • WaveAudio=mciwave.drv
  • Sequencer=msciseq.drv
  • CDAudio=mcicda.drv

[drivers] -

  • timer=timer.drv
  • midimapper=midimap.drv
  • Midi=sb16fm.drv
  • Midi1=sb16snd.drv
  • Wave=sb1snd.drv
  • Aux=sb16snd.drv
  • Mixer=sb16snd.drv

[DDEShares] -

[Network] -

  • winnet=wfwnet/00025100
  • multinet=nonet
  • FileSharing=Yes
  • PrintSharing=Yes
  • LogonDisconnected=Yes
  • EnableSharing=Yes
  • UserName=username
  • Workgroup=WORKGROUP
  • ComputerName=SOMEOLD486
  • Comment=Old486DX
  • logonvalidated=no

[network drivers] -

  • devdir=C:\WINDOWS
  • LoadRMDriver=No
  • netcard=pcntnd.dos
  • pcntnd.dos=LOW
  • transport=ndishlp.sys,*netbeui

[Password Lists] -

  • *Shares=C:\WINDOWS\Share000.PWL
  • username=C:\WINDOWS\USERNAME.PWL

[sndblast.drv] -

[NWNBLINK] -

  • LANABASE=1

[ms$pcntn30] -

  • IPMask=0.0.0.0
  • IPAddress=0.0.0.0
  • Descripion=Advanced Micro Devices PCNET Family
  • Binding=ms$pcntn3

[MSTCP] -

  • EnableRouting=0
  • interfaces=ms$pcntn30
  • deadgwdetect=1
  • pmtudiscovery=1

[DNS] -

  • DomainName=
  • DNSDomains=

[NBT] -

  • LANABASE=2
  • EnableProxy=0
  • EnableDNS=0

[svga256.drv] -

  • ChipSet=VMWare SVGA2
  • LatchCapable=no
  • Resolution=2
  • dpi=96
  • svgamode=48


WIN.INI
WIN.INI deals mostly with internal Windows application settings, fonts, ports, and the handling of fonts. See the sameple from my VM below to get an idea of what is listed in here.

[windows]
spooler=yes
load=
run=
Beep=yes
NullPort=None
device=
BorderWidth=3
CursorBlinkRate=530
DoubleClickSpeed=452
Programs=com exe bat pif
Documents=
DeviceNotSelectedTimeout=15
TransmissionRetryTimeout=45
KeyboardDelay=2
KeyboardSpeed=31
ScreenSaveActive=0
ScreenSaveTimeout=120

[Desktop]
Pattern=(none)
TileWallPaper=0
GridGranularity=0

[Extensions]
crd=cardfile.exe ^.crd
trm=terminal.exe ^.trm
txt=notepad.exe ^.txt
ini=notepad.exe ^.ini
pcx=pbrush.exe ^.pcx
bmp=pbrush.exe ^.bmp
wri=write.exe ^.wri
rec=recorder.exe ^.rec
hlp=winhelp.exe ^.hlp
mmf=msmail.exe /f ^.mmf

[intl]
sLanguage=enu
sCountry=United States
iCountry=1
iDate=0
iTime=0
iTLZero=0
iCurrency=0
iCurrDigits=2
iNegCurr=0
iLzero=1
iDigits=2
iMeasure=1
s1159=AM
s2359=PM
sCurrency=$
sThousand=,
sDecimal=.
sDate=/
sTime=:
sList=,
sShortDate=M/d/yy
sLongDate=dddd, MMMM dd, yyyy

[ports]
; A line with [filename].PRN followed by an equal sign causes
; [filename] to appear in the Control Panel's Printer Configuration Dialog
; box. A printer connected to [filename] directs its output into this file.
;The file must be on one of your local drives: you cannot print to a network
; file.
LPT1:=
LPT2:=
LPT3:=
COM1:=9600,n,8,1,x
COM2:=9600,n,8,1,x
COM3:=9600,n,8,1,x
COM4:=9600,n,8,1,x
EPT:=
FILE;=
LPT1.DOS=
LPT2.DOS=

[FontSubstitutes]
Helv=MS Sans Serif
Tms Run=MS Serif
Times=Times New Roman
Helvetica=Arial

[TrueType]

[Sounds]
SystemDefault=ding.wav; Default Beep
SystemExclamation=ding.wav, Exclamation
SystemStart=chimes.wav, Windows Start
SystemExit=chimes.wav, Windows Exit
SystemHand=ding.wav, Critical Stop
SystemQuestion=ding.wav, Question
SystemAsterisk=ding.wav, Asterisk
RingIn=ringin.wav, Incoming Call
RingOut=ringout.wav, Outgoing Call

[mci extensions]
wav=waveaudio
mid=sequencer
rmi=sequencer

[Compatibility]
NOTSHELL=0x0001
WPWINFIL=0x0006
CCMAIL=0x0000
AMIPRO=0x0010
REM=0x0022
PIXIES=0x0040
CP=0x0040
JW=0x42000
TME=0x0100
VB=0x0200
WIN2WRS=0x1210
PACKRAT=0x0000
VISION=0x0040
MCOURIER=0x0000
_BNOTES=0x24000
MILESV3=0x1000
PM4=0x2000
DESIGNER=0x2000
PLANNER=0x2000
DRAW=0x2000
WINSIM=0x2000
CHARISMA=0x2000
PR2=0x2000
PLUS=0x1000
ED=0x00010000
APORIA=0x0100
EXCEL=0x1000
GUIDE=0x1000
NETSETZ=0x0100
W4GL=0x4000
W4GLR=0x4000
TURBOTAX=0x00000000

[winsetup] source_disk_path=D:\

[fonts]
Arial (TrueType)=ARIAL.FOT
Arial Bold (TrueType)=ARIALBD.FOT
Arial Bold Italic (TrueType)=ARIALBI.FOT
Arial Italic (TrueType)=ARIALI.FOT
Courier New (TrueType)=COUR.FOT
Courier New Bold (TrueType)=COURBD.FOT
Courier New Bold Italic (TrueType)=COURBI.FOT
Courier New Italic (TrueType)=COURI.FOT
Times New Roman (TrueType)=TIMES.FOT
Times New Roman Bold (TrueType)=TIMESBD.FOT
Times New Roman Bold Italic (TrueType)=TIMESBI.FOT
Times New Roman Italic (TrueType)=TIMESI.FOT
WingDings (TrueType)=WINGDING.FOT
Roman (Plotter)=ROMAN.FON
Script (Plotter)=SCRIPT.FON
Modern (Plotter)=MODERN.FON
Symbol (TrueType)=SYMBOL.FOT
MS Sans Serif 8,10,12,14,18.24 (VGA res)=SSERIFE.FON
Courier 10,12,15 (VGA res)=COURE.FON
MS Serif 8,10,12,14,18,24 (VGA res)=SERIFE.FON
Symbol 8,10,12,14,18,24 (VGA res)=SYMBOLE.FON
Small Fonts (VGA res)=SMALLE.FON

[embedding]
SoundRec=Sound,Sound,SoundRec.exe,picture
Package=Package,Package,packager.exe,picture
PBrush=Paintbrush Picture, Paintbrush Picture,pbrush.exe,picture

[windows] -

[Desktop] -

[Extensions] -

[intl] -

[ports] -

[FontSubstitutes] -

[TrueType] -

[Sounds] -

[mci extensions] -

[Compatibility] -

[winsetup] -

[fonts] -

[embedding] -


PROTOCOL.INI
PROTOCOL.INI - deals with the network settings for Windows For Workgroups 3.1x. It's basically a part of the Microsoft LAN Manager/LAN CLient underpinnings that are used to make networking in Windows For Workgroups actually work (MSLANMAN uses the same structure and setup as WFW).

[network setup]
version=0x3110
netcard=ms$pcntn3,1,MS$PCNTN3,3
transport=ms$nwlinknb,NWLINK
transport=ms$ndishlp,MS$NDISHLP
transport=ms$netbeui,NETBEUI
transport=tcpip-32r,MSTCP32
lana0=ms$pcntn3,1,ms$netbeui
lana1=ms$pcntn3,1,ms$nwlinknb
lana2=ms$pcntn3,1,ms$ndishlp
lana3=ms$pcntn3,1,tcpip-32r


[protman]
DriverName=PROTMAN$
PRIORITY=MS$NDISHLP

[MS$PCNTN3]
DriverName=PCNTND$

[MS$PCNTN3]
DriveRName=PCNTND$

[PCNTN3]
Adapters=MS$PCNTN3

[NWLINK]
BINDINGS=MS$PCNTN3

[MS$NDISHLP]
DriverName=ndishlp$
BINDING=MS$PCNTN3

[NETBEUI]
DriverName=netbeui$
SESSIONS=10
NCBS=12
BINDINGS=MS$PCNTN3
LANABASE=0

[MSTCP32]
BINDINGS=MS$PCNTN3
LANABASE=2

[network setup] -

[protman] -

[MS$PCNTN3] -

[MS$PCNTN3] -

[PCNTN3] -

[NWLINK] -

[MS$NDISHLP] -

[NETBEUI] -

[MSTCP32] -