I personally have tested VB 3 in Win 3.1, Win '95, Win 98, and Windows 2000 professional, which is essiantialy NT 5.0. VB 3 works flawlessly with ALL these operating systems. As for long file names, no VB 3 program should have long file names in it anyways. Those operating systems that do support long filenames, also maintain a working DOS (8.3) equivelant name.
For excample, don't write a VB program that might access "C:\Program Files". VB 3 could not do this even if it were runnning on Win 95/98/NT systems! Instead, specify it's 8.3 equivelant. While it would normally be "C:\progra~1" for this example, this may not be the case on a computer that the program migh end up on. I therefore suggest writing a routine that would determine the OS of the host machine and take the appropriate steps to determine the "8.3" name of the target directory or file.
A "crude", but effective example on how one might do this is to issue a dos SHELL command from within the VB program that calls "ver >osver". This would put the OS version in a file called "osver" and the program could then read that file to determin what OS it is using.
Once the OS is determined, and it is discovered to be a OS that uses long file names, you could then use another SHELL call to do a "DIR >dirlist" to output the directory list to a file and then write a routine to read in the data listing while "stripping" the needed information from the file.
For example, in Windows 95/98/ME systems, the normal "DIR >dirlist" would be sufficient. below is a sample output line one might get in the file when obtaining a DIR listing of "C:\"
-----------------------------------------------------------
PROGRA~1 <DIR> 11-05-00 Program Files
-----------------------------------------------------------
The first 15 characters could be stripped as the name to use, while the right section of the line would be the long filename equivelant
In Windows 2000, similiar results could be obtained by using the "DIR /X >dirlist" syntax.