Transferring files between Vista and older versions of Windows with a direct cable connection

January 25, 2009

 

I was trying to upgrade an older laptop from Windows 95 to 98 for someone when I discovered that he had no working optical drive. The PCMCIA drivers were also not working causing the NIC to fail. “No problem” I thought, I’ll just use my a link cable to backup his files to my machine, use a floppy to format his system and then just transfer the Windows setup files to the hard disk.

Unfortunately I found that they have removed the “Direct Cable Connection” in Vista. Not only that but all of the other software I have around (like PC Anywhere) does not run under Vista. I found out that  Vista doesn’t support direct incoming connections anymore also. He also had an Iomega Zip Drive which connected through the parallel port, which also will not work under Vista. The direct cable transfer was the best solution for transferring the files between systems and I really had to find a way to make it work.

Background:

The Direct Cable Connection I’m talking about is an older method of linking two PC’s. Basically you connect the systems via their parallel or serial ports using a null serial cable or a parallel link cable. The cable must be one of those types, you can’t use a regular serial/parallel cable as the wires for send and receive will not line up properly. They are not expensive (Compusmart has one for $8.99 CDN) and can be bought at most computer stores that carry a variety of cables.

You then would use terminal or link software to transfer files between the systems. There is a variety of software which can do this, including Direct Cable Connection which is built into most versions of Windows (Windows 95 all the way up to XP).

This is a useful method of transferring large files between systems which do not have larger removable storage or proper ethernet connectivity.

The solution:

The direct cable file transfers still seem to work under the 16-bit MS-DOS subsystem (NTVDM). If you use an MS-DOS application for the transfer on Vista it can totally work. Of course, this only applies to 32-bit versions of Vista (64-bit Vista does not have the 16-but subsystem).

There are a lot of MS-DOS products which can do this. I personally have had great success with the free terminal program Conex. Although the interface might not be the easiest, it is small and can easily fit on a DOS boot disk and also runs under Vista. There are many more free terminal programs for DOS which you can try. There are also some commercial products (some which are available for download on abandonware sites).

There is a catch however. MS-DOS  applications do not support long file names, you would need to access them by their 8.3 names and the long names will not be preserved across systems. In order to preserve filenames you should compress the files into an archive like ZIP or RAR. When you decompress them on the client system the names will be preserved regardless of the archive name. It’s also good to do because you can send many files in one file transfer and the compression can reduce transfer time.

Using Conex (for example):

You can press ALT-H for help anytime in the application. For starters you may want to use ALT-I to change your connection settings. Use the up and down arrows to select settings and the left and right arrows to change the option, ENTER to confirm. You want to make sure it is set to: COM->Host. If you press ENTER on that screen you can set your baud rate from 9600 to a higher speed (ie. 115200).

Press F9 to enter file transfer mode. Press “P” to set the protocol. You will most likely want to use ZMODEM which is fairly robust and can resume transfers if there are errors. You can press “I” to further configure the protocol options if you like.

You then use “S” to send a file over the link or “R” to receive a file. If you choose send then you will have to enter the path and filename. If you have the file(s) in the same directory as you run CONEX.EXE from it makes it easier. If one system is sending you can press “R” on the other system and it will wait for the transfer. If you use ZMODEM it should start the transfer automatically. If you need to stop the transfer at any time you can press ESC.

I have used this method with Conex a few times with a few different systems and it has worked well. Most other software should work too. The only problem I’ve seen is that the transfer can be very slow if the DOS window is not in the foreground.

More on configuring COM ports:

Your COM ports can be configured in Windows Device Manager (Start->Run and type in “devmgmt.msc”). There will be a section labeled Ports and there should be a Communications Port listed. In the device properties there will be a Port Settings tab where you can set their options. For serial ports the speed is often default “9600” baud even though they can actually use much faster speeds. “115200” is much faster and is a fairly standard speed for most serial ports. The rest of the settings should usually be  N,8,1 (no parity, 8 data bits, 1 stop bit).

Under MS-DOS (or NTVDM) the ports can be configured via MODE.COM. If you enter the command “MODE COM1” it should display the port statistics:

Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.

C:USERSKEITHB~1>mode com1

Status for device COM1:
———————–
    Baud:            9600
    Parity:          Even
    Data Bits:       7
    Stop Bits:       1
    Timeout:         OFF
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     OFF
    RTS circuit:     OFF

The actual syntax to configure the port settings is:

MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
             [to=on|off] [xon=on|off] [odsr=on|off]
             [octs=on|off] [dtr=on|off|hs]
             [rts=on|off|hs|tg] [idsr=on|off]

So, for example to set COM1’s port speed to 115200 baud, you would use the command “mode com1 BAUD=115200”.

If you wish to use MODE.COM under Vista you will need to run COMMAND.COM not CMD.EXE to change COM port settings. Changing it under COMMAND.COM also changes the settings in Device Manager.

Conclusion:

The direct cable connection is not something I use often these days so I can’t say if it will work as well for everyone else. I have also not tried using a parallel port link and can only confirm that it works via serial port/null modem cable. I hope this will be useful to anyone with similar issues.


Internet Explorer 8.0 Beta Crashes When Loading ActiveX Controls

January 10, 2009

Summary:

When running Internet Explorer 8.0 beta 2 on Windows XP it might crash with a “memory cannot be read” error whenever it tries to load or install an ActiveX control.

Problem Details:

When browsing any page that uses any ActiveX control, it will crash the browser.  If the control is already installed the browser will crash when loading the object (if you have approved it to run on all sites) or else when IE displays the information bar (yellow band) to confirm running the control on the current site. If the control isn’t installed or is older, it crashes the browser when the information bar is displayed for the ActiveX installation. Either way any site with ActiveX content crashes the browser.

The application error is always “The memory cannot be read”. Clicking OK will close the browser. If you re-launch IE and choose to resume the previous session it’ll crash again.

Solution:

This problem is solved by disabling the Data Execution Prevention (DEP) feature.  DEP prevents memory areas which contain data from being executed as code by the processor. The ActiveX parser does not seem to be working properly when this is on.

To disable the DEP option:

1. Open the Internet Options control panel or else use Tools->Internet Options from inside Internet Explorer.

2. Select the “Advanced” tab on the top right of the window.

3. Scroll through the options list and look for “Enable memory protection to help mitigate online attacks*” in the “Security” category (close to the bottom of the list).

4. Make sure the option is unchecked and click OK to apply the setting. You’ll have to close any open IE windows and re-launch the browser for the change to take effect.

Conclusion:

There is a good blog post by Eric Lawrence of the IE8 team which gives more detail about the issue. Although the post states only some incompatible add-ons cause problems, every XP machine I’ve seen with the feature enabled crashes with all add-ons.

It may work fine on other XP configurations however. If you aren’t affected by the issue above you’ll probably want to keep it enabled, as it is a good security feature! Vista is also not affected by the issue.