After reading a question on the forum, I decided to find out exactly what is
keeping Visual Basic programs from running and see if it's easy to fix. It
turns out that about the first thing that the VB runtime (msvbvm60.dll) does
is check the version number of the OS. At the moment we return:
dwMajorVersion = 4
dwMinorVersion = 0
dwBuildNumber = 0
dwPlatformId = 2
szCSDVersion = "ReactOS 0.2.5-CVS (Build 20041216)"
wServicePackMajor = 6
wServicePackMinor = 0
wSuiteMask = 0
wProductType = 0
The VB runtime wants at least NT4/SP3. The checks that currently fail are
dwBuildNumber (needs at least 1381) and the check for the service pack. It
expects the szCSDVersion field to be "Service Pack x" and extracts the
service pack number from that. (Good thing btw that there are not more than
10 service packs for NT4...).
Anyway, dwBuildNumber will have to be increased to 1381, that's no problem.
But the szCSDVersion is currently the only way for usermode programs to get
the ReactOS version. I know it's used by e.g. cmd.exe to display the version
number.
So, I don't think we have much choice, szCSDVersion will have to be set to
"Service Pack 6". Question is how to make the ReactOS version string
available. I've been thinking about adding it after the "Service Pack 6"
string (so the sp6 string is terminated with a nul byte, following the nul
byte is the ReactOS version string). Another option would be to store it in
the registry, but that would mean that it could get out of sync with the
version info in the kernel.
So, I'd like to store it as second string in szCSDVersion. Any objections to
that?
Gé van Geldorp.